RFR: 8374878: Add Atomic<T>::compare_set [v2]
Kim Barrett
kbarrett at openjdk.org
Fri Jan 9 19:15:23 UTC 2026
On Fri, 9 Jan 2026 17:55:21 GMT, Aleksey Shipilev <shade at openjdk.org> wrote:
>> Following up on [JDK-8367013](https://bugs.openjdk.org/browse/JDK-8367013) improvement, there is an opportunity to rewrite some of our low-level `cas(oldv, newv) == oldv` patterns to more straight-forward compare-and-set helper method. This is useful when you do not actually care about the result that used to be in memory or that is currently in memory, you only care if CAS succeeded or not.
>>
>> Java atomics already have this duality; arguably due to historical timeline of having compare-and-set before introducing compare-and-exchange.
>>
>> Found this when converting Epsilon to Atomic<T> ([JDK-8374876](https://bugs.openjdk.org/browse/JDK-8374876)), where this method would simplify the code a bit. I looked around current uses of `compare_exchange` and rewrote them to `compare_set` to show what simplifications are possible.
>>
>> Additional testing:
>> - [x] Linux x86_64 server fastdebug, `all`
>
> Aleksey Shipilev has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains five additional commits since the last revision:
>
> - Missed another use
> - Delegate non-translating version
> - Merge branch 'master' into JDK-8374878-atomic-compare-set
> - Indenting is a bit off
> - Fix
Looks good.
Note that the recent updates invalidated prior approvals. So here's a re-approval.
src/hotspot/share/gc/shared/taskqueue.inline.hpp line 289:
> 287: // Note that using "bottom" here might fail, since a pop_local might
> 288: // have decremented it.
> 289: assert_not_underflow(localBot, newAge.top());
[pre-existing] This assertion seems weird. It is checking `newAge.top()` after
already using been installed. Maybe it is misplaced? Or maybe it is checking
the wrong thing? Needs to be investigated. I've filed
https://bugs.openjdk.org/browse/JDK-8374915
-------------
Marked as reviewed by kbarrett (Reviewer).
PR Review: https://git.openjdk.org/jdk/pull/29135#pullrequestreview-3645249668
PR Review Comment: https://git.openjdk.org/jdk/pull/29135#discussion_r2677331195
More information about the hotspot-dev
mailing list