RFR: 8367013: Add Atomic<T> to package/replace idiom of volatile var plus AtomicAccess:: operations

Kim Barrett kbarrett at openjdk.org
Sun Sep 28 11:17:59 UTC 2025


Please review this change that adds the type Atomic<T>, to use as the type
of a variable that is accessed (including writes) concurrently by multiple
threads. This is intended to replace (most) uses of the current HotSpot idiom
of declaring a variable volatile and accessing that variable using functions
from the AtomicAccess class.
https://github.com/openjdk/jdk/blame/528f93f8cb9f1fb9c19f31ab80c8a546f47beed2/doc/hotspot-style.md#L138-L147

This change replaces https://github.com/openjdk/jdk/pull/27462. Differences are

* Substantially restructured `Atomic<T>`, to be IDE friendly. It's
operationally the same, with the same API, hence uses and gtests didn't need
to change in that respect. Thanks to @stefank for raising this issue, and for
some suggestions toward improvements.

* Changed how fetch_then_set for atomic translated types is handled, to avoid
having the function there at all if it isn't usable, rather than just removing
it via SFINAE, leaving an empty overload set.

* Added more gtests.

Testing: mach5 tier1-6, GHA sanity tests

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

Commit messages:
 - update copyrights
 - update FreeListAllocator
 - update nonblockingQueue
 - update LockFreeStack
 - convert StringDedupTable
 - convert SingleWriterSynchronizer
 - test_atomic
 - Atomic<T>
 - add DependentAlwaysFalse

Changes: https://git.openjdk.org/jdk/pull/27539/files
  Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=27539&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8367013
  Stats: 1515 lines in 13 files changed: 1377 ins; 0 del; 138 mod
  Patch: https://git.openjdk.org/jdk/pull/27539.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/27539/head:pull/27539

PR: https://git.openjdk.org/jdk/pull/27539


More information about the hotspot-dev mailing list