RFR: AArch64: 8179954: AArch64: C1 and C2 volatile accesses are not sequentially consistent (original) (raw)

Andrew Dinn adinn at redhat.com
Wed May 10 07:48:35 UTC 2017


On 09/05/17 18:18, Andrew Haley wrote:

In C2 we use LDAR/STLR to handle volatile accesses, but in C1 and the interpreter we use separate DMB instructions and relaxed loads. When used together, these do not form a sequentially-consistent memory ordering. For example, if stores use STLR and loads use LDR;DMB a simple Dekker idiom will fail.

Oh, well caught!

This is extremely hard to test because the loads and stores have to be in separately-compiled methods, but it is incorrect, and likely to fail in very weakly-ordered implementations.

Not to mention hard to debug ;-)

Note: this is for JDK 9.

http://cr.openjdk.java.net/~aph/8179954/

Yes, this patch looks good and really ought to go into jdk9.

regards,

Andrew Dinn

Senior Principal Software Engineer Red Hat UK Ltd Registered in England and Wales under Company Registration No. 03798903 Directors: Michael Cunningham, Michael ("Mike") O'Neill, Eric Shander



More information about the hotspot-dev mailing list