Mercurial > hg > graal-compiler
changeset 14585:7e9409cb656f
make ArrayEqualsNode fixed instead of floating
author | Lukas Stadler <lukas.stadler@oracle.com> |
---|---|
date | Tue, 18 Mar 2014 16:35:49 +0100 |
parents | 6189c1983cd3 |
children | d2fe05d5cc96 |
files | graal/com.oracle.graal.replacements.test/src/com/oracle/graal/replacements/test/ArraysSubstitutionsTest.java graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/ArrayEqualsNode.java |
diffstat | 2 files changed, 22 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/graal/com.oracle.graal.replacements.test/src/com/oracle/graal/replacements/test/ArraysSubstitutionsTest.java Tue Mar 18 13:14:53 2014 +0100 +++ b/graal/com.oracle.graal.replacements.test/src/com/oracle/graal/replacements/test/ArraysSubstitutionsTest.java Tue Mar 18 16:35:49 2014 +0100 @@ -329,4 +329,25 @@ return Arrays.equals(a, b); } + @Test + public void testEqualsNodeGVN() { + test("testEqualsNodeGVNSnippet", true); + } + + public static int[] intArrayCompare = new int[]{1, 2, 3, 4, 5, 6, 7, 8, 9}; + public static int[] intArray; + + public static boolean testEqualsNodeGVNSnippet(boolean b) { + int[] newIntArray = new int[]{0, 2, 3, 4, 5, 6, 7, 8, 9}; + intArray = newIntArray; + + if (b) { + newIntArray[0] = 1; + return Arrays.equals(newIntArray, intArrayCompare); + } else { + newIntArray[0] = 1; + return Arrays.equals(newIntArray, intArrayCompare); + } + } + }
--- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/ArrayEqualsNode.java Tue Mar 18 13:14:53 2014 +0100 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/ArrayEqualsNode.java Tue Mar 18 16:35:49 2014 +0100 @@ -31,13 +31,12 @@ import com.oracle.graal.graph.spi.*; import com.oracle.graal.lir.*; import com.oracle.graal.nodes.*; -import com.oracle.graal.nodes.calc.*; import com.oracle.graal.nodes.type.*; /** * Compares two arrays with the same length. */ -public class ArrayEqualsNode extends FloatingNode implements LIRGenLowerable, Canonicalizable { +public class ArrayEqualsNode extends FixedWithNextNode implements LIRGenLowerable, Canonicalizable { /** {@link Kind} of the arrays to compare. */ private final Kind kind;