RFR: Missing enter/leave around keep_alive_barrier in AArch64
Roman Kennke
rkennke at redhat.com
Wed Jan 3 12:08:55 UTC 2018
Am 03.01.2018 um 11:45 schrieb Andrew Haley:
> On 07/12/17 13:18, Roman Kennke wrote:
>> I've been missing enter/leave calls around the SATB pre barrier call in
>> MacroAssembler::keep_alive_barrier() for Shenandoah. This has been
>> sending EvilSyncBug (and possible some other tests) into endless loops.
>>
>> The cleanest place to have them is in the (only) user of it in
>> generate_Reference_get():
>>
>> http://cr.openjdk.java.net/~rkennke/aarch64-enter-leave/webrev.00/
>>
>> Test: EvilSyncBug terminates now (aarch64). Running other tests right now
>>
>> Ok?
>
> All this saving and restoring of registers looks fantastically inefficient.
> Is it the this does not matter because it is very rare?
>
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.
Roman
More information about the shenandoah-dev
mailing list