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 <[email protected]> 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.