RFR: Generational support for weak roots and references [v3]
William Kemper
wkemper at openjdk.java.net
Fri Aug 6 17:09:21 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 with a new target base due to a merge or a rebase. The pull request now contains 22 commits:
- Merge branch 'master' into generational-weak-refs
- Include oopHierarchy.hpp, rather than oop.hpp
- 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
- Configure soft reference policy for old generation
- Merge branch 'shenandoah' into generational-weak-refs
- Perform coalesce and fill after class unloading
- Formatting fixes, remove TODO
- ... and 12 more: https://git.openjdk.java.net/shenandoah/compare/5ebe8d10...9892fcce
-------------
Changes: https://git.openjdk.java.net/shenandoah/pull/53/files
Webrev: https://webrevs.openjdk.java.net/?repo=shenandoah&pr=53&range=02
Stats: 164 lines in 23 files changed: 90 ins; 26 del; 48 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