RFR: Generational support for weak roots and references [v2]
William Kemper
wkemper at openjdk.java.net
Tue Aug 3 16:48:33 UTC 2021
> ### Summary
> The LRB for non-strong references is modified to permit resurrection of objects outside the generation being collected. In other words, resurrection is only blocked for unmarked objects in the generation being collected.
>
> Each `ShenandoahGeneration` has its own reference processor instance. In some cases, a reference from the old generation may end up on the young generation discovered list if the reference points to a young referent (this would happen if the old reference is in the remembered set). However, young references that point to referents in the old generation are _not_ discovered. This has the effect of strongly marking the old generation referent. This also avoids the case of having young references on the old generation discovered list being evacuated/relocated while they wait for old generation reference processing (although we believe this case would be handled correctly by the existing update references code).
William Kemper has updated the pull request incrementally with four additional commits since the last revision:
- Prepare for concurrent root processing in old generation final mark
- Clear cards and object registrations when region is recycled
This fixes an error when humongous regions are allocated and when ensures registrations are correct when regions are promoted.
- Check that pointer is in heap before looking up affiliation
- Guard assert from cross-generation handle
-------------
Changes:
- all: https://git.openjdk.java.net/shenandoah/pull/53/files
- new: https://git.openjdk.java.net/shenandoah/pull/53/files/80821d08..314c6550
Webrevs:
- full: https://webrevs.openjdk.java.net/?repo=shenandoah&pr=53&range=01
- incr: https://webrevs.openjdk.java.net/?repo=shenandoah&pr=53&range=00-01
Stats: 24 lines in 6 files changed: 14 ins; 5 del; 5 mod
Patch: https://git.openjdk.java.net/shenandoah/pull/53.diff
Fetch: git fetch https://git.openjdk.java.net/shenandoah pull/53/head:pull/53
PR: https://git.openjdk.java.net/shenandoah/pull/53
More information about the shenandoah-dev
mailing list