RFR: 8339616: GenShen: Introduce new state to distinguish promote-in-place phase as distinct from concurrent evacuation [v2]

Y. Srinivas Ramakrishna ysr at openjdk.org
Mon Sep 23 19:28:57 UTC 2024


On Fri, 20 Sep 2024 23:11:22 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 one additional commit since the last revision:
> 
>   Do not enter oom-during-evac protocol when only promoting regions in place

src/hotspot/share/gc/shenandoah/shenandoahConcurrentGC.cpp line 526:

> 524: void ShenandoahConcurrentGC::entry_promote_in_place() {
> 525:   shenandoah_assert_generational();
> 526: 

Do you also want to assert that collection set is empty?

-------------

PR Review Comment: https://git.openjdk.org/shenandoah/pull/503#discussion_r1771966914


More information about the shenandoah-dev mailing list