RFR: 8263427: Shenandoah: Trigger weak-LRB even when heap is stable

Zhengyu Gu zgu at openjdk.java.net
Thu Mar 11 19:27:06 UTC 2021


On Thu, 11 Mar 2021 18:52:54 GMT, Roman Kennke <rkennke at openjdk.org> wrote:

>> src/hotspot/share/gc/shenandoah/shenandoahVerifier.cpp line 607:
>> 
>>> 605:   VerifyThreadGCState(const char* label, char expected) : _label(label), _expected(expected) {}
>>> 606:   void do_thread(Thread* t) {
>>> 607:     char actual = ShenandoahThreadLocalData::gc_state(t) & ~((char)ShenandoahHeap::WEAK_ROOTS);
>> 
>> Why these adjustments are needed? I think it shows we don't play well with GC-state lifecycle here...
>
> The verifier would complain about the extra bit being set or maybe not set (e.g. concurrent cycles would set it, but degen cycles would not). We haven't verified conc-weakroots-in-progress before, so I figured it would be easiest to keep it that way and mask it out.

ShenandoahGCStateResetter used to disable the flag, so it makes sense.

-------------

PR: https://git.openjdk.java.net/jdk/pull/2945


More information about the shenandoah-dev mailing list