RFR: 8376126: G1: Convert remaining volatiles in G1ConcurrentMark to Atomic<T>
Ivan Walulya
iwalulya at openjdk.org
Fri Jan 23 12:46:08 UTC 2026
On Thu, 22 Jan 2026 16:36:08 GMT, Thomas Schatzl <tschatzl at openjdk.org> wrote:
> Hi all,
>
> please convert remaining volatile declarations in `G1ConcurrentMark` to use `Atomic<T>`. These volatiles are used to indicate concurrent phased access (like changing the variable in thread A, then reading the variable in thread B while A is dormant, or only ever updating it in one direction) where concurrency safety is provided by barriers between these phases. But there are also other cases)
>
> The exception is `G1ConcurrentMark::_finger` that has apparently been overlooked in an earlier changes.
>
> Testing: gha
>
> Thanks,
> Thomas
Marked as reviewed by iwalulya (Reviewer).
src/hotspot/share/gc/g1/g1ConcurrentMark.hpp line 679:
> 677: uint completed_mark_cycles() const;
> 678:
> 679: bool has_aborted() { return _has_aborted.load_relaxed(); }
Suggestion:
bool has_aborted() { return _has_aborted.load_relaxed(); }
-------------
PR Review: https://git.openjdk.org/jdk/pull/29368#pullrequestreview-3697312733
PR Review Comment: https://git.openjdk.org/jdk/pull/29368#discussion_r2721051786
More information about the hotspot-gc-dev
mailing list