RFR: 8339616: GenShen: Introduce new state to distinguish promote-in-place phase as distinct from concurrent evacuation [v3]
Aleksey Shipilev
shade at openjdk.org
Tue Sep 24 16:06:01 UTC 2024
On Mon, 23 Sep 2024 20:25:34 GMT, William Kemper <wkemper at openjdk.org> wrote:
>> 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
One final thing.
src/hotspot/share/gc/shenandoah/shenandoahVerifier.cpp line 1086:
> 1084: }
> 1085:
> 1086: void ShenandoahVerifier::verify_before_region_promotions() {
I think the better name is `::verify_after_concmark_with_promotions`. It is still "after mark" check first and foremost.
-------------
Marked as reviewed by shade (Committer).
PR Review: https://git.openjdk.org/shenandoah/pull/503#pullrequestreview-2325745220
PR Review Comment: https://git.openjdk.org/shenandoah/pull/503#discussion_r1773645447
More information about the shenandoah-dev
mailing list