# HG changeset patch # User Doug Simon # Date 1428422525 -7200 # Node ID f2a357ee14e42b63d8016eedda1b229593f78f18 # Parent 63e4f33dce8424b4eb1f2cea2e35cb8aadd0f8a9 converted @MethodSubstitutions for java.util.Arrays to MethodSubstitutionPlugins diff -r 63e4f33dce84 -r f2a357ee14e4 graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/ArraysSubstitutions.java --- 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; diff -r 63e4f33dce84 -r f2a357ee14e4 graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/GraalMethodSubstitutions.java --- 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); } } } diff -r 63e4f33dce84 -r f2a357ee14e4 graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/LongSubstitutions.java --- 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; diff -r 63e4f33dce84 -r f2a357ee14e4 graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/StandardGraphBuilderPlugins.java --- 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()) {