RFR: AArch64: 8179954: AArch64: C1 and C2 volatile accesses are not sequentially consistent

Andrew Haley aph at redhat.com
Wed May 10 14:18:42 UTC 2017


So you were right.  Dammit.  :-)

This test:

    @State(Scope.Benchmark)
    public static class BenchmarkState {
        static int nn = 99;
    }
    @Benchmark
    public int testMethod(BenchmarkState state) {
        return state.nn;
    }

Interpreter-only, before my patch:

Benchmark               Mode  Cnt   Score   Error  Units
MyBenchmark.testMethod  avgt    5  92.938 ? 0.870  ns/op

After my patch, it's slower:

# Run complete. Total time: 00:00:07

Benchmark               Mode  Cnt   Score   Error  Units
MyBenchmark.testMethod  avgt    5  94.518 ? 0.562  ns/op

But if I insert conditional branches around the fences as you suggest,
the result is much better:

Benchmark               Mode  Cnt   Score   Error  Units
MyBenchmark.testMethod  avgt   25  83.825 ? 0.161  ns/op

New patch at http://cr.openjdk.java.net/~aph/8179954-2/

OK?

Andrew.


More information about the hotspot-dev mailing list