RFR: 8339616: GenShen: Introduce new state to distinguish promote-in-place phase as distinct from concurrent evacuation [v3]
William Kemper
wkemper at openjdk.org
Mon Sep 23 20:25:34 UTC 2024
> The generational mode for Shenandoah is able to promote regions in place (effectively moving an entire region of live objects, without evacuating any objects). It does this during a normal evacuation phase. However, in some cases, Shenandoah may choose to skip the evacuation phase, _even when there are entire regions to promote_. Prior to this PR, Shenandoah would essentially force itself into an evacuation phase, with nothing to evacuate. Though this was expedient, it caused all manner of knock-on effects and unintended consequences with barriers and asserts and the state of the heap. Here, we have reverted that business and created a path for this special "only doing in place promotions" cycle that does not cause the heap to expect to evacuate objects or find forwarding pointers in them.
William Kemper has updated the pull request incrementally with three additional commits since the last revision:
- Split verification for only promote-in-place into a separate method
- Assert that collection set is empty when only promoting regions
- Make the distinction between only in-place-promotions and evacuations more clear
-------------
Changes:
- all: https://git.openjdk.org/shenandoah/pull/503/files
- new: https://git.openjdk.org/shenandoah/pull/503/files/0ed07e92..d1b0293d
Webrevs:
- full: https://webrevs.openjdk.org/?repo=shenandoah&pr=503&range=02
- incr: https://webrevs.openjdk.org/?repo=shenandoah&pr=503&range=01-02
Stats: 105 lines in 6 files changed: 60 ins; 5 del; 40 mod
Patch: https://git.openjdk.org/shenandoah/pull/503.diff
Fetch: git fetch https://git.openjdk.org/shenandoah.git pull/503/head:pull/503
PR: https://git.openjdk.org/shenandoah/pull/503
More information about the shenandoah-dev
mailing list