RFR: Bulk backport to sh/jdk8u

Aleksey Shipilev shade at redhat.com
Wed Sep 27 19:09:39 UTC 2017


On 09/27/2017 07:33 PM, Andrew Haley wrote:
> 5111   // During evacuation and evacuation only, we can have the stores of cset-values
> 5112   // to non-cset destinations. Everything else is covered by storeval barriers.
> 5113   mov(tmp1, ShenandoahHeap::evacuation_in_progress_addr());
> 5114   ldrw(tmp1, Address(tmp1));
> 5115   cbnzw(tmp1, done);
> 
> Looks reasonable, but in jdk8 is evacuation_in_progress not a field in the
> thread?

Yes, we can poll it off TLS, like the write barrier does. But for the checking/debugging code like
this, it makes more sense to test the closest source of truth: the global heap variable, instead of
going via optimized TLS flag. If TLS flag setter fails, then prior WB/storeval silently fails, and
then this checking code will capture the inconsistency. IIRC, we did experience TLS setting failure
once, this is when we beefed up on store checks!

We may consider rehashing changing all of these later, all at once, though unlikely for the reasons
above.

Thanks,
-Aleksey




More information about the shenandoah-dev mailing list