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