src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.core.test/src/org/graalvm/compiler/core/test/ConditionalEliminationTestBase.java
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File
*** old/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.core.test/src/org/graalvm/compiler/core/test/ConditionalEliminationTestBase.java	Mon Mar 20 17:37:23 2017
--- new/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.core.test/src/org/graalvm/compiler/core/test/ConditionalEliminationTestBase.java	Mon Mar 20 17:37:23 2017

*** 20,31 **** --- 20,29 ---- * or visit www.oracle.com if you need additional information or have any * questions. */ package org.graalvm.compiler.core.test; import org.junit.Assert; import org.graalvm.compiler.debug.Debug; import org.graalvm.compiler.nodes.ProxyNode; import org.graalvm.compiler.nodes.StructuredGraph; import org.graalvm.compiler.nodes.StructuredGraph.AllowAssumptions; import org.graalvm.compiler.nodes.spi.LoweringTool;
*** 34,67 **** --- 32,65 ---- import org.graalvm.compiler.phases.common.DominatorConditionalEliminationPhase; import org.graalvm.compiler.phases.common.IterativeConditionalEliminationPhase; import org.graalvm.compiler.phases.common.LoweringPhase; import org.graalvm.compiler.phases.schedule.SchedulePhase; import org.graalvm.compiler.phases.tiers.PhaseContext; + import org.junit.Assert; /** * Collection of tests for * {@link org.graalvm.compiler.phases.common.DominatorConditionalEliminationPhase} including those * that triggered bugs in this phase. */ public class ConditionalEliminationTestBase extends GraalCompilerTest { private final boolean disableSimplification; protected ConditionalEliminationTestBase() { ! disableSimplification = true; ! this(true); } protected ConditionalEliminationTestBase(boolean disableSimplification) { this.disableSimplification = disableSimplification; } protected void testConditionalElimination(String snippet, String referenceSnippet) { ! testConditionalElimination(snippet, referenceSnippet, false, false); } @SuppressWarnings("try") ! protected void testConditionalElimination(String snippet, String referenceSnippet, boolean applyConditionalEliminationOnReference, boolean applyLowering) { StructuredGraph graph = parseEager(snippet, AllowAssumptions.YES); Debug.dump(Debug.BASIC_LOG_LEVEL, graph, "Graph"); PhaseContext context = new PhaseContext(getProviders()); CanonicalizerPhase canonicalizer1 = new CanonicalizerPhase(); if (disableSimplification) {
*** 70,106 **** --- 68,110 ---- */ canonicalizer1.disableSimplification(); } CanonicalizerPhase canonicalizer = new CanonicalizerPhase(); try (Debug.Scope scope = Debug.scope("ConditionalEliminationTest", graph)) { ! canonicalizer1.apply(graph, context); new ConvertDeoptimizeToGuardPhase().apply(graph, context); // new DominatorConditionalEliminationPhase(true).apply(graph, context); ! prepareGraph(graph, canonicalizer1, context, applyLowering); new IterativeConditionalEliminationPhase(canonicalizer, true).apply(graph, context); canonicalizer.apply(graph, context); canonicalizer.apply(graph, context); new ConvertDeoptimizeToGuardPhase().apply(graph, context); } catch (Throwable t) { Debug.handle(t); } StructuredGraph referenceGraph = parseEager(referenceSnippet, AllowAssumptions.YES); try (Debug.Scope scope = Debug.scope("ConditionalEliminationTest.ReferenceGraph", referenceGraph)) { new ConvertDeoptimizeToGuardPhase().apply(referenceGraph, context); + prepareGraph(referenceGraph, canonicalizer, context, applyLowering); if (applyConditionalEliminationOnReference) { ! new DominatorConditionalEliminationPhase(true).apply(referenceGraph, context); canonicalizer.apply(referenceGraph, context); ! DominatorConditionalEliminationPhase.create(true).apply(referenceGraph, context); + } canonicalizer.apply(referenceGraph, context); } else { canonicalizer.apply(referenceGraph, context); } + new ConvertDeoptimizeToGuardPhase().apply(graph, context); } catch (Throwable t) { Debug.handle(t); } assertEquals(referenceGraph, graph); } + protected void prepareGraph(StructuredGraph graph, CanonicalizerPhase canonicalizer, PhaseContext context, boolean applyLowering) { + if (applyLowering) { + new ConvertDeoptimizeToGuardPhase().apply(graph, context); + new LoweringPhase(canonicalizer, LoweringTool.StandardLoweringStage.HIGH_TIER).apply(graph, context); + canonicalizer.apply(graph, context); + } + canonicalizer.apply(graph, context); + new ConvertDeoptimizeToGuardPhase().apply(graph, context); + } + public void testProxies(String snippet, int expectedProxiesCreated) { StructuredGraph graph = parseEager(snippet, AllowAssumptions.YES); PhaseContext context = new PhaseContext(getProviders()); CanonicalizerPhase canonicalizer1 = new CanonicalizerPhase(); canonicalizer1.disableSimplification();
*** 108,119 **** --- 112,123 ---- CanonicalizerPhase canonicalizer = new CanonicalizerPhase(); new LoweringPhase(canonicalizer, LoweringTool.StandardLoweringStage.HIGH_TIER).apply(graph, context); canonicalizer.apply(graph, context); int baseProxyCount = graph.getNodes().filter(ProxyNode.class).count(); ! new DominatorConditionalEliminationPhase(true).apply(graph, context); ! DominatorConditionalEliminationPhase.create(true).apply(graph, context); canonicalizer.apply(graph, context); ! new SchedulePhase(graph.getOptions()).apply(graph, context); int actualProxiesCreated = graph.getNodes().filter(ProxyNode.class).count() - baseProxyCount; Assert.assertEquals(expectedProxiesCreated, actualProxiesCreated); } }

src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.core.test/src/org/graalvm/compiler/core/test/ConditionalEliminationTestBase.java
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File