RFR: JDK-8141634 Implement VarHandles/Unsafe intrinsics on SPARC
Trevor Watson
trevor.d.watson at oracle.com
Fri Jul 29 08:37:08 UTC 2016
Summary:
SPARC assembler implementations of the compareAndExchange* intrinsics
and the addition of the WeakCompareAndSwap* matchers.
Have successfully run the 'gmake test' target and the benchmarks
mentioned in the bug report.
Benchmarks for the compareAndExchange* intrinsic operations now show an
approximate 9x-20x improvement:
Before:
Benchmark Mode Cnt Score Error Units
caeAcquire.IntTest.varHandle avgt 15 351.933 ? 7.161 ns/op
caeAcquire.LongTest.varHandle avgt 15 435.872 ? 3.129 ns/op
caeAcquire.ObjectTest.varHandle avgt 15 975.728 ? 88.362 ns/op
caeRelease.IntTest.varHandle avgt 15 346.391 ? 2.798 ns/op
caeRelease.LongTest.varHandle avgt 15 439.734 ? 9.739 ns/op
caeRelease.ObjectTest.varHandle avgt 15 934.279 ? 19.454 ns/op
caeVolatile.IntTest.varHandle avgt 15 346.076 ? 1.771 ns/op
caeVolatile.LongTest.varHandle avgt 15 436.788 ? 1.825 ns/op
caeVolatile.ObjectTest.varHandle avgt 15 935.250 ? 59.526 ns/op
With new intrinsic implementation:
caeAcquire.IntTest.varHandle avgt 15 38.514 ? 0.974 ns/op
caeAcquire.LongTest.varHandle avgt 15 38.411 ? 0.359 ns/op
caeAcquire.ObjectTest.varHandle avgt 15 42.616 ? 0.916 ns/op
caeRelease.IntTest.varHandle avgt 15 38.235 ? 0.185 ns/op
caeRelease.LongTest.varHandle avgt 15 38.165 ? 0.145 ns/op
caeRelease.ObjectTest.varHandle avgt 15 42.320 ? 0.156 ns/op
caeVolatile.IntTest.varHandle avgt 15 38.321 ? 0.221 ns/op
caeVolatile.LongTest.varHandle avgt 15 38.270 ? 0.198 ns/op
caeVolatile.ObjectTest.varHandle avgt 15 42.541 ? 0.720 ns/op
Webrev: http://cr.openjdk.java.net/~alanbur/JDK-8141634/
Bug link: https://bugs.openjdk.java.net/browse/JDK-8141634
More information about the hotspot-dev
mailing list