RFR 8151198: VarHandle factory-specific exceptions

Aleksey Shipilev aleksey.shipilev at oracle.com
Fri Apr 8 18:57:23 UTC 2016

On 04/08/2016 09:39 PM, Hans Boehm wrote:
> I didn't previously have the impression that get/setOpaque was analogous
> to just C/C++ volatile.  C volatile officially has nothing to do with
> threads and does not prevent undefined behavior for data races.  It does
> not in general guarantee single-copy atomicity.  

Yes, Opaque does not imply memory ordering either.

> My prior impression was that Opaque was intended to be similar to a C++
> memory_order_relaxed access to a variable that is declared as both
> atomic and volatile, with the unordered interpretation of C++
> "volatile".  

Yes, that seems to be the intended semantics; sorry for the confusion.
Let's have this discussion when Paul submits the follow-up fix for
https://bugs.openjdk.java.net/browse/JDK-8153875; I linked your reply
there. Some cross-check against what is implemented in C1 and C2 would
be required at that point.


More information about the core-libs-dev mailing list