RFR: Enable remembered set verification during global collections [v3]
William Kemper
wkemper at openjdk.java.net
Thu Sep 9 17:45:06 UTC 2021
On Wed, 8 Sep 2021 22:00:46 GMT, William Kemper <wkemper at openjdk.org> wrote:
>> src/hotspot/share/gc/shenandoah/shenandoahHeap.cpp line 2202:
>>
>>> 2200: } else if (r->affiliation() == ShenandoahRegionAffiliation::OLD_GENERATION) {
>>> 2201: if (_heap->active_generation()->generation_mode() == GLOBAL) {
>>> 2202: _heap->marked_object_oop_iterate(r, &cl, update_watermark);
>>
>> In the original code, we used the same iterator over marked objects for both coalescing and filling and for updating references. That is "more efficient" than this new approach in that we make one pass instead of two over all objects in all heap regions. I understand that there was a bug in how that is implemented, apparently, because this new version of the code has fewer crashes than the original. Nevertheless, would like to have a comment here that suggests we might explore a way to consolidate the efforts at some future time, especially if we detect performance regressions with this new approach.
>
> I'll try putting the 'fill-after-final-mark' on the code path that skips updates references and restoring this code. That way, we'll do one or the other, but not both.
After thinking about this, I'd rather do it on a separate PR. We'd still want to fill before update references when `ShenandoahVerify` is enabled.
-------------
PR: https://git.openjdk.java.net/shenandoah/pull/64
More information about the shenandoah-dev
mailing list