RFR: 8374878: Add Atomic<T>::compare_set [v2]
Aleksey Shipilev
shade at openjdk.org
Sun Jan 11 20:41:11 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
Testing is still clean. I am integrating now, thanks.
-------------
PR Comment: https://git.openjdk.org/jdk/pull/29135#issuecomment-3735730728
More information about the hotspot-dev
mailing list