RFR (S): 8033380: Experimental VM flag to enforce access atomicity (original) (raw)

Aleksey Shipilev aleksey.shipilev at oracle.com
Wed Feb 12 00:29:33 PST 2014


Thanks Dean!

The study of the compiler code, and the generated assembly, and the empirical tests seems to indicate double accesses are atomic by construction.

Either way, we mark the C2 Store/Load nodes to require atomic access. Should there be platform which ignores that flag for doubles, that would mean volatile double access atomicity is broken there as well. This makes the ground for the VM fix, not the additional work for the experimental feature.

-Aleksey.

On 02/12/2014 01:08 AM, Dean Long wrote:

It looks to me that C2 will only look at the atomic flag for longs, not doubles, so if you need atomic access to doubles, I think more work needs to be done.

dl On 2/11/2014 3:02 AM, Aleksey Shipilev wrote: Hi,

I understand we are still closed for integration? Please review this small feature meanwhile: https://bugs.openjdk.java.net/browse/JDK-8033380 http://cr.openjdk.java.net/~shade/8033380/webrev.02/ TL;DR: JMM 9 may need to extend the access atomicity over longs and doubles. Luckily, our logic in emitting the relevant access-atomic instructions is decoupled from memory barriers logic, and so we can "just" unconditionally go through needsatomicaccess where appropriate. Testing: - full cycle JPRT - targeted microbenchmarks on x86/ARM/PPC Thanks, -Aleksey



More information about the hotspot-compiler-dev mailing list