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