changeset 20847:f2a357ee14e4

converted @MethodSubstitutions for java.util.Arrays to MethodSubstitutionPlugins
author Doug Simon <doug.simon@oracle.com>
date Tue, 07 Apr 2015 18:02:05 +0200
parents 63e4f33dce84
children 0c1cd72188dc
files graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/ArraysSubstitutions.java graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/GraalMethodSubstitutions.java graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/LongSubstitutions.java graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/StandardGraphBuilderPlugins.java
diffstat 4 files changed, 16 insertions(+), 18 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/ArraysSubstitutions.java	Tue Apr 07 17:41:19 2015 +0200
+++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/ArraysSubstitutions.java	Tue Apr 07 18:02:05 2015 +0200
@@ -22,16 +22,13 @@
  */
 package com.oracle.graal.replacements;
 
-import com.oracle.graal.api.replacements.*;
 import com.oracle.graal.replacements.nodes.*;
 
 /**
  * Substitutions for {@link java.util.Arrays} methods.
  */
-@ClassSubstitution(value = java.util.Arrays.class)
 public class ArraysSubstitutions {
 
-    @MethodSubstitution
     public static boolean equals(boolean[] a, boolean[] a2) {
         if (a == a2) {
             return true;
@@ -42,7 +39,6 @@
         return ArrayEqualsNode.equals(a, a2, a.length);
     }
 
-    @MethodSubstitution
     public static boolean equals(byte[] a, byte[] a2) {
         if (a == a2) {
             return true;
@@ -53,7 +49,6 @@
         return ArrayEqualsNode.equals(a, a2, a.length);
     }
 
-    @MethodSubstitution
     public static boolean equals(char[] a, char[] a2) {
         if (a == a2) {
             return true;
@@ -64,7 +59,6 @@
         return ArrayEqualsNode.equals(a, a2, a.length);
     }
 
-    @MethodSubstitution
     public static boolean equals(short[] a, short[] a2) {
         if (a == a2) {
             return true;
@@ -75,7 +69,6 @@
         return ArrayEqualsNode.equals(a, a2, a.length);
     }
 
-    @MethodSubstitution
     public static boolean equals(int[] a, int[] a2) {
         if (a == a2) {
             return true;
@@ -86,7 +79,6 @@
         return ArrayEqualsNode.equals(a, a2, a.length);
     }
 
-    @MethodSubstitution
     public static boolean equals(long[] a, long[] a2) {
         if (a == a2) {
             return true;
@@ -97,7 +89,6 @@
         return ArrayEqualsNode.equals(a, a2, a.length);
     }
 
-    @MethodSubstitution
     public static boolean equals(float[] a, float[] a2) {
         if (a == a2) {
             return true;
@@ -108,7 +99,6 @@
         return ArrayEqualsNode.equals(a, a2, a.length);
     }
 
-    @MethodSubstitution
     public static boolean equals(double[] a, double[] a2) {
         if (a == a2) {
             return true;
--- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/GraalMethodSubstitutions.java	Tue Apr 07 17:41:19 2015 +0200
+++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/GraalMethodSubstitutions.java	Tue Apr 07 18:02:05 2015 +0200
@@ -25,7 +25,6 @@
 import static com.oracle.graal.compiler.common.GraalOptions.*;
 
 import java.lang.reflect.*;
-import java.util.*;
 
 import com.oracle.graal.api.code.*;
 import com.oracle.graal.api.meta.*;
@@ -41,12 +40,9 @@
 
     public void registerReplacements(MetaAccessProvider metaAccess, LoweringProvider loweringProvider, SnippetReflectionProvider snippetReflection, Replacements replacements, TargetDescription target) {
         if (Intrinsify.getValue()) {
-            replacements.registerSubstitutions(Arrays.class, ArraysSubstitutions.class);
             replacements.registerSubstitutions(Array.class, ArraySubstitutions.class);
             replacements.registerSubstitutions(String.class, StringSubstitutions.class);
             replacements.registerSubstitutions(Math.class, MathSubstitutionsX86.class);
-            replacements.registerSubstitutions(Long.class, LongSubstitutions.class);
-            replacements.registerSubstitutions(Integer.class, IntegerSubstitutions.class);
         }
     }
 }
--- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/LongSubstitutions.java	Tue Apr 07 17:41:19 2015 +0200
+++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/LongSubstitutions.java	Tue Apr 07 18:02:05 2015 +0200
@@ -22,13 +22,10 @@
  */
 package com.oracle.graal.replacements;
 
-import com.oracle.graal.api.replacements.*;
 import com.oracle.graal.replacements.nodes.*;
 
-@ClassSubstitution(Long.class)
 public class LongSubstitutions {
 
-    @MethodSubstitution
     public static int numberOfLeadingZeros(long i) {
         if (i == 0) {
             return 64;
@@ -36,7 +33,6 @@
         return 63 - BitScanReverseNode.unsafeScan(i);
     }
 
-    @MethodSubstitution
     public static int numberOfTrailingZeros(long i) {
         if (i == 0) {
             return 64;
--- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/StandardGraphBuilderPlugins.java	Tue Apr 07 17:41:19 2015 +0200
+++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/StandardGraphBuilderPlugins.java	Tue Apr 07 18:02:05 2015 +0200
@@ -23,6 +23,9 @@
 package com.oracle.graal.replacements;
 
 import static com.oracle.graal.api.code.MemoryBarriers.*;
+
+import java.util.*;
+
 import sun.misc.*;
 
 import com.oracle.graal.api.code.*;
@@ -67,6 +70,7 @@
         registerIntegerLongPlugins(plugins, Kind.Long);
         registerFloatPlugins(plugins);
         registerDoublePlugins(plugins);
+        registerArraysPlugins(plugins);
         registerUnsafePlugins(plugins);
         registerEdgesPlugins(metaAccess, plugins);
         registerGraalDirectivesPlugins(plugins);
@@ -78,6 +82,18 @@
         }
     }
 
+    private static void registerArraysPlugins(InvocationPlugins plugins) {
+        Registration r = new Registration(plugins, Arrays.class);
+        r.registerMethodSubstitution(ArraysSubstitutions.class, "equals", boolean[].class, boolean[].class);
+        r.registerMethodSubstitution(ArraysSubstitutions.class, "equals", byte[].class, byte[].class);
+        r.registerMethodSubstitution(ArraysSubstitutions.class, "equals", short[].class, short[].class);
+        r.registerMethodSubstitution(ArraysSubstitutions.class, "equals", char[].class, char[].class);
+        r.registerMethodSubstitution(ArraysSubstitutions.class, "equals", int[].class, int[].class);
+        r.registerMethodSubstitution(ArraysSubstitutions.class, "equals", float[].class, float[].class);
+        r.registerMethodSubstitution(ArraysSubstitutions.class, "equals", long[].class, long[].class);
+        r.registerMethodSubstitution(ArraysSubstitutions.class, "equals", double[].class, double[].class);
+    }
+
     private static void registerUnsafePlugins(InvocationPlugins plugins) {
         Registration r = new Registration(plugins, Unsafe.class);
         for (Kind kind : Kind.values()) {