RFR: Enable remembered set verification during global collections

Kelvin Nilsen kdnilsen at openjdk.java.net
Wed Sep 8 21:45:50 UTC 2021


On Wed, 8 Sep 2021 20:55:32 GMT, Kelvin Nilsen <kdnilsen at openjdk.org> wrote:

>> There are two sets of changes here:
>>  * Fixes to the verifier itself to enable remembered set verification during global collection
>>  * Fixes to prevent the remembered set scan from parsing unmarked objects after a global collection
>> 
>> These changes pass the dacapo suite with `-XX:+ShenandoahVerify` and pass the shenandoah tier1 tests.
>
> src/hotspot/share/gc/shenandoah/shenandoahHeap.cpp line 2657:
> 
>> 2655:             HeapWord* tams = ctx->top_at_mark_start(r);
>> 2656:             if (obj_addr >= tams) {
>> 2657:               obj_addr += obj->size();
> 
> Were you actually seeing obj_addr >= tams here?  I'd be inclined to replace your new code with an assert(obj_addr < tams).  Or provide comments to explain.

If we verify remset while old marking is "ongoing", ctx is not "reliable".  In that case, I had been arranging for ctx to equal NULL with the understanding that obj->size() would get me to the next (possibly coalesced and filled) object within old-gen.  I don't yet follow the logic for how you can always rely on ctx being not NULL here.

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

PR: https://git.openjdk.java.net/shenandoah/pull/64


More information about the shenandoah-dev mailing list