RFR 8136924 Vectorized support for array equals/compare/mismatch using Unsafe

Paul Sandoz paul.sandoz at oracle.com
Wed Nov 25 09:53:36 UTC 2015


Hi,

And this is the review for the Java part:

  http://cr.openjdk.java.net/~psandoz/jdk9/JDK-8136924-arrays-mismatch-vectorized-unsafe/webrev/

Which will be updated to add @HotSpotIntrinsicCandidate when JDK-8143355 is pushed. [1]

The plan is all reviewed changes will be pushed to hs-comp and then we follow up:

  1) adding the intrinsic to other platforms

  2) improving C1 (perhaps even the interpreter?) since the intrinsic is a stub which IIUC makes it easier to plug in.

  3) take a swing at consolidating other equal/compare intrinsics, such as those for char[]/String-based equal/compare

  4) adding methods to String such as mismatch method.

I can help by pushing all reviewed patches. I will kick off a JPRT run with all patches applied.

I did evaluate/test the HotSpot patch (stared at the patch and generated code for UseAVX < 2, and measured) and reviewed with my limited knowledge of HotSpot.

Paul.

[1]
diff -r 01b49c2960fd src/java.base/share/classes/java/util/ArraysSupport.java
--- a/src/java.base/share/classes/java/util/ArraysSupport.java	Tue Nov 17 15:42:53 2015 +0100
+++ b/src/java.base/share/classes/java/util/ArraysSupport.java	Tue Nov 17 17:05:09 2015 +0100
@@ -24,7 +24,7 @@
 */
package java.util;

-//import jdk.internal.HotSpotIntrinsicCandidate;
+import jdk.internal.HotSpotIntrinsicCandidate;
import jdk.internal.misc.Unsafe;

class ArraysSupport {
@@ -72,7 +72,7 @@
     * If a mismatch is not found the negation of one plus the number of
     * remaining pairs of elements to be checked in the tail of the two arrays.
     */
-//    @HotSpotIntrinsicCandidate
+    @HotSpotIntrinsicCandidate
    static int vectorizedMismatch(Object a, long aOffset,
                                  Object b, long bOffset,
                                  int length,

> On 25 Nov 2015, at 01:00, Deshpande, Vivek R <vivek.r.deshpande at intel.com> wrote:
> 
> Hi all
> 
> We would like to contribute a patch from Intel which optimizes vectorizedMismatch() method in java.util.ArraysSupport.java for X86 architecture using AVX instructions.
> The improvement gives more than 2x gain over Unsafe implementation for long arrays.
> The bug is blocked by bug: vectorized support for array equals/compare/mismatch using Unsafe (https://bugs.openjdk.java.net/browse/JDK-8136924.)
> Could you please review and sponsor this patch.
> 
> Bug-id:
> https://bugs.openjdk.java.net/browse/JDK-8143355
> webrev:
> http://cr.openjdk.java.net/~mcberg/8143355/webrev.01/
> 
> Thanks and regards,
> Vivek

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 841 bytes
Desc: Message signed with OpenPGP using GPGMail
URL: <http://mail.openjdk.java.net/pipermail/hotspot-compiler-dev/attachments/20151125/b8c18153/signature.asc>


More information about the hotspot-compiler-dev mailing list