RFR 8161444 VarHandles should provide access bitwise atomics
Paul Sandoz
paul.sandoz at oracle.com
Wed Aug 10 20:49:30 UTC 2016
Hi,
I updated the webrev in place.
The doc of each bitwise access mode now includes:
* <p>If the variable type is the non-integral {@code boolean} type then a
* logical OR is performed instead of a bitwise OR.
The unsafe bitwise acquire CAS methods have:
@ForceInline
public final int getAndBitwiseOrIntAcquire(Object o, long offset, int mask) {
int current;
do {
// Plain read, the value is a hint, the acquire CAS does the work
current = getInt(o, offset);
} while (!weakCompareAndSwapIntAcquire(o, offset,
current, current | mask));
return current;
}
Thanks,
Paul.
> On 9 Aug 2016, at 17:14, Paul Sandoz <Paul.Sandoz at oracle.com> wrote:
>
> Hi
>
> Please review the following webrev which combines:
>
> 8161444 VarHandles should provide access bitwise atomics
> 8162107 Add acquire/release variants for getAndSet and getAndAdd
>
> http://cr.openjdk.java.net/~psandoz/jdk9/JDK-8161444-vhs-bitwise-atomics/webrev/
> http://cr.openjdk.java.net/~psandoz/jdk9/JDK-8161444-vhs-bitwise-atomics/specdiff/overview-summary.html
>
> The set of access modes are expanded for support bitwise or/and/xor operations for volatile/acquire/release. Acquire/release getAndAdd and getAndSet access modes are also added (a future webrev will remove getAndAdd). This gets closer to parity with C++ atomics.
>
> As a follow on i will:
>
> - update the Hotspot Unsafe tests as a separate issue (the VarHandle tests implicitly test the Unsafe methods).
>
> - log HotSpot bugs for making the Unsafe bitwise atomics intrinsic for various platforms.
>
> Thanks,
> Paul.
More information about the core-libs-dev
mailing list