RFR/RFC: Make OOM-during-evacuation race-free

Roman Kennke rkennke at redhat.com
Wed Oct 25 12:05:16 UTC 2017


Am 25.10.2017 um 13:56 schrieb Roland Westrelin:
>> We cannot trigger a safepoint (and do a full-gc) while we're in the
>> write-barrier because we're inside a no-leaf call and don't have any
>> debug info. (In fact, per contract, we should not even block until
>> workers settled). We cannot make the write-barrier regular leaf calls
>> because this would very seriously affect our ability to optimize
>> barriers in C2. We cannot even throw an OOME because we have no debug info.
> Let's say we add a new kind of runtime calls where it's allowed to block
> but not to deopt. Then current c2 optimizations are unaffected and the
> problem is solved, right?
>
> We would have to change the safepointing protocol so if a thread blocks
> in a no deopt call, it would have to be allowed to continue execution
> until a safepoint that allows deopt.
>
> Problem with this, other than it's maybe not as simple as it seems, is
> that it could be quite invasive and hard to sell upstream.
Hmm. And we could still move around and manipulate the barrier as we do 
now, and still have enough information (e.g. about locals) to allow 
safepointing at the write-barrier? I simply don't know enough to tell this.

I guess it might be useful for other GC's barriers too. Not sure.

Roman


More information about the shenandoah-dev mailing list