RFR: 8350898: Shenandoah: Eliminate final roots safepoint [v2]

Kelvin Nilsen kdnilsen at openjdk.org
Tue Mar 4 15:02:04 UTC 2025


On Mon, 3 Mar 2025 18:30:33 GMT, William Kemper <wkemper at openjdk.org> wrote:

>> This PR converts the final roots safepoint operation into a handshake. The safepoint operation still exists, but is only executed when `ShenandoahVerify` is enabled. In addition to this change, this PR also improves the logging for the concurrent preparation for update references from [PR 22688](https://github.com/openjdk/jdk/pull/22688).
>
> William Kemper has updated the pull request with a new target base due to a merge or a rebase. The pull request now contains 10 commits:
> 
>  - Merge remote-tracking branch 'jdk/master' into eliminate-final-roots
>  - Fix comments
>  - Add whitespace at end of file
>  - More detail for init update refs event message
>  - Use timing tracker for timing verification
>  - Merge remote-tracking branch 'jdk/master' into eliminate-final-roots
>  - WIP: Fix up phase timings for newly concurrent final roots and init update refs
>  - WIP: Combine satb transfer with state propagation, restore phase timing data
>  - WIP: Transfer pointers out of SATB with a handshake
>  - WIP: Clear weak roots flag concurrently

Thanks.  Great improvement.

src/hotspot/share/gc/shenandoah/shenandoahOldGeneration.cpp line 458:

> 456: 
> 457:   // Step 1. All threads need to 'complete' partially filled, thread local buffers. This
> 458:   // is accomplished in ShenandoahConcurrentGC::complete_abbreviated_cycle using a Handshake

I think we're talking about "complete processing" of thread-local satb buffers.  To avoid confusion with tlab, maybe add satb to this comment.

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

Marked as reviewed by kdnilsen (Committer).

PR Review: https://git.openjdk.org/jdk/pull/23830#pullrequestreview-2657883998
PR Review Comment: https://git.openjdk.org/jdk/pull/23830#discussion_r1979620964


More information about the shenandoah-dev mailing list