RFR: 8376531: Genshen: Missing volatile modifier on multiple fields of ShenandoahOldGeneration [v2]
Aleksey Shipilev
shade at openjdk.org
Wed Jan 28 08:13:24 UTC 2026
On Tue, 27 Jan 2026 23:49:18 GMT, Xiaolong Peng <xpeng at openjdk.org> wrote:
>> Came across the source code of ShenandoahOldGeneration, and noticed that we use AtomicAccess to read/write to fields `_promoted_expended`, `_promotion_failure_count`, `_promotion_failure_words` but non of them is declared with volatile modifier.
>>
>> Given that OpenJDK has introduced `Atomic<T>` to replace the idiom of volatile var plus AtomicAccess:: operations(see details [here](https://bugs.openjdk.org/browse/JDK-8367013), I decided to convert these fields to `Atomic<T>` instead of adding `volatile`.
>>
>> ### Test
>> - [x] hotshpot_gc_shenandoah
>> - [x] GHA
>
> Xiaolong Peng has updated the pull request incrementally with one additional commit since the last revision:
>
> Use `1UL` instead of `static_cast<size_t>(1)`
OK, so this sounds like the usual `Convert ShenandoahOldGeneration to Atomic<T>` issue type that have been flying around. Consider renaming it, and maybe work on other places too, in separate PRs?
-------------
PR Comment: https://git.openjdk.org/jdk/pull/29456#issuecomment-3809668808
More information about the hotspot-gc-dev
mailing list