33 import org.graalvm.compiler.nodes.StructuredGraph; |
33 import org.graalvm.compiler.nodes.StructuredGraph; |
34 import org.graalvm.compiler.nodes.StructuredGraph.AllowAssumptions; |
34 import org.graalvm.compiler.nodes.StructuredGraph.AllowAssumptions; |
35 import org.graalvm.compiler.nodes.spi.CoreProviders; |
35 import org.graalvm.compiler.nodes.spi.CoreProviders; |
36 import org.graalvm.compiler.nodes.spi.LoweringTool; |
36 import org.graalvm.compiler.nodes.spi.LoweringTool; |
37 import org.graalvm.compiler.phases.OptimisticOptimizations; |
37 import org.graalvm.compiler.phases.OptimisticOptimizations; |
38 import org.graalvm.compiler.phases.common.CanonicalizerPhase; |
|
39 import org.graalvm.compiler.phases.common.FloatingReadPhase; |
38 import org.graalvm.compiler.phases.common.FloatingReadPhase; |
40 import org.graalvm.compiler.phases.common.GuardLoweringPhase; |
39 import org.graalvm.compiler.phases.common.GuardLoweringPhase; |
41 import org.graalvm.compiler.phases.common.LoweringPhase; |
40 import org.graalvm.compiler.phases.common.LoweringPhase; |
42 import org.graalvm.compiler.phases.tiers.MidTierContext; |
41 import org.graalvm.compiler.phases.tiers.MidTierContext; |
43 import org.junit.Test; |
42 import org.junit.Test; |
225 } |
224 } |
226 |
225 |
227 private void testCombinedIf(String snippet, int count) { |
226 private void testCombinedIf(String snippet, int count) { |
228 StructuredGraph graph = parseEager(snippet, AllowAssumptions.YES); |
227 StructuredGraph graph = parseEager(snippet, AllowAssumptions.YES); |
229 CoreProviders context = getProviders(); |
228 CoreProviders context = getProviders(); |
230 new LoweringPhase(new CanonicalizerPhase(), LoweringTool.StandardLoweringStage.HIGH_TIER).apply(graph, context); |
229 new LoweringPhase(createCanonicalizerPhase(), LoweringTool.StandardLoweringStage.HIGH_TIER).apply(graph, context); |
231 new FloatingReadPhase().apply(graph); |
230 new FloatingReadPhase().apply(graph); |
232 MidTierContext midContext = new MidTierContext(getProviders(), getTargetProvider(), OptimisticOptimizations.ALL, graph.getProfilingInfo()); |
231 MidTierContext midContext = new MidTierContext(getProviders(), getTargetProvider(), OptimisticOptimizations.ALL, graph.getProfilingInfo()); |
233 new GuardLoweringPhase().apply(graph, midContext); |
232 new GuardLoweringPhase().apply(graph, midContext); |
234 new LoweringPhase(new CanonicalizerPhase(), LoweringTool.StandardLoweringStage.MID_TIER).apply(graph, midContext); |
233 new LoweringPhase(createCanonicalizerPhase(), LoweringTool.StandardLoweringStage.MID_TIER).apply(graph, midContext); |
235 new CanonicalizerPhase().apply(graph, context); |
234 createCanonicalizerPhase().apply(graph, context); |
236 assertDeepEquals(count, graph.getNodes().filter(IfNode.class).count()); |
235 assertDeepEquals(count, graph.getNodes().filter(IfNode.class).count()); |
237 } |
236 } |
238 |
237 |
239 private void test(String snippet) { |
238 private void test(String snippet) { |
240 StructuredGraph graph = parseEager(snippet, AllowAssumptions.YES); |
239 StructuredGraph graph = parseEager(snippet, AllowAssumptions.YES); |
245 if (!(n instanceof FrameState)) { |
244 if (!(n instanceof FrameState)) { |
246 n.replaceFirstInput(param, constant); |
245 n.replaceFirstInput(param, constant); |
247 } |
246 } |
248 } |
247 } |
249 debug.dump(DebugContext.BASIC_LEVEL, graph, "Graph"); |
248 debug.dump(DebugContext.BASIC_LEVEL, graph, "Graph"); |
250 new CanonicalizerPhase().apply(graph, getProviders()); |
249 createCanonicalizerPhase().apply(graph, getProviders()); |
251 for (FrameState fs : param.usages().filter(FrameState.class).snapshot()) { |
250 for (FrameState fs : param.usages().filter(FrameState.class).snapshot()) { |
252 fs.replaceFirstInput(param, null); |
251 fs.replaceFirstInput(param, null); |
253 param.safeDelete(); |
252 param.safeDelete(); |
254 } |
253 } |
255 StructuredGraph referenceGraph = parseEager(REFERENCE_SNIPPET, AllowAssumptions.YES); |
254 StructuredGraph referenceGraph = parseEager(REFERENCE_SNIPPET, AllowAssumptions.YES); |