RFR: Missing enter/leave around keep_alive_barrier in AArch64
Roman Kennke
rkennke at redhat.com
Wed Jan 3 12:34:10 UTC 2018
Am 03.01.2018 um 13:16 schrieb Andrew Haley:
> On 03/01/18 12:08, Roman Kennke wrote:
>> Are you referring to enter()/leave() around calling the
>> keep-alive-barriers? I think this is ok: it only pushes/pops a stack
>> frame, and it is only needed and done in the Reference_get() interpreter
>> 'intrinsic', because it doesn't have a stack frame on its own.
>
> I'm thinking about the SATB barrier. Calling into the runtime
> clobbers all call-clobbered registers, and that's a lot, just to
> push one pointer onto a list.
>
Ah. This is ok. There is an assembly fast-path that checks for
SATB-active, and if it is, pushes the pointer to the list. Only when the
buffer is full, it calls into the slowpath/runtime, and only then it
needs to push/pop the registers. And only in interpreted code.
Roman
More information about the shenandoah-dev
mailing list