RFR: JDK-8141634 Implement VarHandles/Unsafe intrinsics on SPARC

Zoltán Majó zoltan.majo at oracle.com
Fri Aug 5 18:59:18 UTC 2016


Hi Trevor,


thank you for working on this enhancement!

I executed all tests in the hotspot/test directory for your proposed 
change.  Unfortunately, five tests fail:

compiler/unsafe/JdkInternalMiscUnsafeAccessTestDouble.java
compiler/unsafe/JdkInternalMiscUnsafeAccessTestFloat.java
compiler/unsafe/JdkInternalMiscUnsafeAccessTestInt.java
compiler/unsafe/JdkInternalMiscUnsafeAccessTestLong.java
compiler/unsafe/JdkInternalMiscUnsafeAccessTestObject.java

You can find more information about the failures (incl. a stack trace) 
here [1].

The failures can be reproduced using JTREG.   I've used a SPARC T5 
machine to reproduce them.  Please let me know if you need more 
information on the setup I used to reproduce the failures.  Also, could 
you please execute the hotspot/compiler tests locally on a SPARC machine 
before sending out the updated webrev?  That way we will catch failures 
earlier.

Thank you!

Best regards,


Zoltan

[1] 
https://bugs.openjdk.java.net/browse/JDK-8141634?focusedCommentId=13983682&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-13983682


On 07/29/2016 01:37 AM, Trevor Watson wrote:
> 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