src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.replacements.test/src/org/graalvm/compiler/replacements/test/ArraysSubstitutionsTest.java
changeset 58877 aec7bf35d6f5
parent 58299 6df94ce3ab2f
equal deleted inserted replaced
58876:1a8d65e71a66 58877:aec7bf35d6f5
    29 import java.util.Arrays;
    29 import java.util.Arrays;
    30 
    30 
    31 import org.graalvm.compiler.nodes.ReturnNode;
    31 import org.graalvm.compiler.nodes.ReturnNode;
    32 import org.graalvm.compiler.nodes.StructuredGraph;
    32 import org.graalvm.compiler.nodes.StructuredGraph;
    33 import org.graalvm.compiler.phases.OptimisticOptimizations;
    33 import org.graalvm.compiler.phases.OptimisticOptimizations;
    34 import org.graalvm.compiler.phases.common.CanonicalizerPhase;
       
    35 import org.graalvm.compiler.phases.tiers.HighTierContext;
    34 import org.graalvm.compiler.phases.tiers.HighTierContext;
    36 import org.graalvm.compiler.replacements.nodes.ArrayEqualsNode;
    35 import org.graalvm.compiler.replacements.nodes.ArrayEqualsNode;
    37 import org.graalvm.compiler.virtual.phases.ea.PartialEscapePhase;
    36 import org.graalvm.compiler.virtual.phases.ea.PartialEscapePhase;
    38 import org.junit.Assert;
    37 import org.junit.Assert;
    39 import org.junit.Test;
    38 import org.junit.Test;
   130     @Test
   129     @Test
   131     public void testCanonicalLength() {
   130     public void testCanonicalLength() {
   132         StructuredGraph graph = parseEager("testCanonicalLengthSnippet", AllowAssumptions.NO);
   131         StructuredGraph graph = parseEager("testCanonicalLengthSnippet", AllowAssumptions.NO);
   133         HighTierContext context = new HighTierContext(getProviders(), getDefaultGraphBuilderSuite(), OptimisticOptimizations.ALL);
   132         HighTierContext context = new HighTierContext(getProviders(), getDefaultGraphBuilderSuite(), OptimisticOptimizations.ALL);
   134         createInliningPhase().apply(graph, context);
   133         createInliningPhase().apply(graph, context);
   135         new CanonicalizerPhase().apply(graph, getProviders());
   134         createCanonicalizerPhase().apply(graph, getProviders());
   136 
   135 
   137         Assert.assertTrue(graph.getNodes(ReturnNode.TYPE).first().result().asJavaConstant().asLong() == 0);
   136         Assert.assertTrue(graph.getNodes(ReturnNode.TYPE).first().result().asJavaConstant().asLong() == 0);
   138     }
   137     }
   139 
   138 
   140     public static final int[] constantArray3 = new int[]{1, 2, 3};
   139     public static final int[] constantArray3 = new int[]{1, 2, 3};
   146     @Test
   145     @Test
   147     public void testCanonicalEqual() {
   146     public void testCanonicalEqual() {
   148         StructuredGraph graph = parseEager("testCanonicalEqualSnippet", AllowAssumptions.NO);
   147         StructuredGraph graph = parseEager("testCanonicalEqualSnippet", AllowAssumptions.NO);
   149         HighTierContext context = new HighTierContext(getProviders(), getDefaultGraphBuilderSuite(), OptimisticOptimizations.ALL);
   148         HighTierContext context = new HighTierContext(getProviders(), getDefaultGraphBuilderSuite(), OptimisticOptimizations.ALL);
   150         createInliningPhase().apply(graph, context);
   149         createInliningPhase().apply(graph, context);
   151         new CanonicalizerPhase().apply(graph, getProviders());
   150         createCanonicalizerPhase().apply(graph, getProviders());
   152 
   151 
   153         Assert.assertTrue(graph.getNodes(ReturnNode.TYPE).first().result().asJavaConstant().asLong() == 1);
   152         Assert.assertTrue(graph.getNodes(ReturnNode.TYPE).first().result().asJavaConstant().asLong() == 1);
   154     }
   153     }
   155 
   154 
   156     public static boolean testCanonicalEqualSnippet() {
   155     public static boolean testCanonicalEqualSnippet() {
   160     @Test
   159     @Test
   161     public void testVirtualEqual() {
   160     public void testVirtualEqual() {
   162         StructuredGraph graph = parseEager("testVirtualEqualSnippet", AllowAssumptions.NO);
   161         StructuredGraph graph = parseEager("testVirtualEqualSnippet", AllowAssumptions.NO);
   163         HighTierContext context = new HighTierContext(getProviders(), getDefaultGraphBuilderSuite(), OptimisticOptimizations.ALL);
   162         HighTierContext context = new HighTierContext(getProviders(), getDefaultGraphBuilderSuite(), OptimisticOptimizations.ALL);
   164         createInliningPhase().apply(graph, context);
   163         createInliningPhase().apply(graph, context);
   165         new CanonicalizerPhase().apply(graph, getProviders());
   164         createCanonicalizerPhase().apply(graph, getProviders());
   166         new PartialEscapePhase(false, new CanonicalizerPhase(), graph.getOptions()).apply(graph, context);
   165         new PartialEscapePhase(false, this.createCanonicalizerPhase(), graph.getOptions()).apply(graph, context);
   167         new CanonicalizerPhase().apply(graph, getProviders());
   166         createCanonicalizerPhase().apply(graph, getProviders());
   168 
   167 
   169         Assert.assertTrue(graph.getNodes(ReturnNode.TYPE).first().result().asJavaConstant().asLong() == 1);
   168         Assert.assertTrue(graph.getNodes(ReturnNode.TYPE).first().result().asJavaConstant().asLong() == 1);
   170     }
   169     }
   171 
   170 
   172     public static boolean testVirtualEqualSnippet() {
   171     public static boolean testVirtualEqualSnippet() {
   178     @Test
   177     @Test
   179     public void testVirtualNotEqual() {
   178     public void testVirtualNotEqual() {
   180         StructuredGraph graph = parseEager("testVirtualNotEqualSnippet", AllowAssumptions.NO);
   179         StructuredGraph graph = parseEager("testVirtualNotEqualSnippet", AllowAssumptions.NO);
   181         HighTierContext context = getDefaultHighTierContext();
   180         HighTierContext context = getDefaultHighTierContext();
   182         createInliningPhase().apply(graph, context);
   181         createInliningPhase().apply(graph, context);
   183         new CanonicalizerPhase().apply(graph, getProviders());
   182         createCanonicalizerPhase().apply(graph, getProviders());
   184         new PartialEscapePhase(false, new CanonicalizerPhase(), graph.getOptions()).apply(graph, context);
   183         new PartialEscapePhase(false, this.createCanonicalizerPhase(), graph.getOptions()).apply(graph, context);
   185         new CanonicalizerPhase().apply(graph, getProviders());
   184         createCanonicalizerPhase().apply(graph, getProviders());
   186 
   185 
   187         Assert.assertTrue(graph.getNodes(ReturnNode.TYPE).first().result().asJavaConstant().asLong() == 0);
   186         Assert.assertTrue(graph.getNodes(ReturnNode.TYPE).first().result().asJavaConstant().asLong() == 0);
   188     }
   187     }
   189 
   188 
   190     public static boolean testVirtualNotEqualSnippet(int x) {
   189     public static boolean testVirtualNotEqualSnippet(int x) {