36 import org.graalvm.compiler.nodes.gc.SerialWriteBarrier; |
36 import org.graalvm.compiler.nodes.gc.SerialWriteBarrier; |
37 import org.graalvm.compiler.nodes.java.AbstractNewObjectNode; |
37 import org.graalvm.compiler.nodes.java.AbstractNewObjectNode; |
38 import org.graalvm.compiler.nodes.spi.LoweringTool; |
38 import org.graalvm.compiler.nodes.spi.LoweringTool; |
39 import org.graalvm.compiler.options.OptionValues; |
39 import org.graalvm.compiler.options.OptionValues; |
40 import org.graalvm.compiler.phases.OptimisticOptimizations; |
40 import org.graalvm.compiler.phases.OptimisticOptimizations; |
41 import org.graalvm.compiler.phases.common.CanonicalizerPhase; |
|
42 import org.graalvm.compiler.phases.common.GuardLoweringPhase; |
41 import org.graalvm.compiler.phases.common.GuardLoweringPhase; |
43 import org.graalvm.compiler.phases.common.LoweringPhase; |
42 import org.graalvm.compiler.phases.common.LoweringPhase; |
44 import org.graalvm.compiler.phases.common.WriteBarrierAdditionPhase; |
43 import org.graalvm.compiler.phases.common.WriteBarrierAdditionPhase; |
45 import org.graalvm.compiler.phases.common.inlining.InliningPhase; |
44 import org.graalvm.compiler.phases.common.inlining.InliningPhase; |
46 import org.graalvm.compiler.phases.common.inlining.policy.InlineEverythingPolicy; |
45 import org.graalvm.compiler.phases.common.inlining.policy.InlineEverythingPolicy; |
81 DebugContext debug = getDebugContext(options, null, snippet); |
80 DebugContext debug = getDebugContext(options, null, snippet); |
82 try (DebugContext.Scope s = debug.scope("WriteBarrierAdditionTest", snippet)) { |
81 try (DebugContext.Scope s = debug.scope("WriteBarrierAdditionTest", snippet)) { |
83 StructuredGraph graph = parseEager(snippet, AllowAssumptions.NO, debug); |
82 StructuredGraph graph = parseEager(snippet, AllowAssumptions.NO, debug); |
84 HighTierContext highContext = getDefaultHighTierContext(); |
83 HighTierContext highContext = getDefaultHighTierContext(); |
85 MidTierContext midContext = new MidTierContext(getProviders(), getTargetProvider(), OptimisticOptimizations.ALL, graph.getProfilingInfo()); |
84 MidTierContext midContext = new MidTierContext(getProviders(), getTargetProvider(), OptimisticOptimizations.ALL, graph.getProfilingInfo()); |
86 new InliningPhase(new InlineEverythingPolicy(), new CanonicalizerPhase()).apply(graph, highContext); |
85 new InliningPhase(new InlineEverythingPolicy(), createCanonicalizerPhase()).apply(graph, highContext); |
87 new CanonicalizerPhase().apply(graph, highContext); |
86 this.createCanonicalizerPhase().apply(graph, highContext); |
88 new PartialEscapePhase(false, new CanonicalizerPhase(), debug.getOptions()).apply(graph, highContext); |
87 new PartialEscapePhase(false, createCanonicalizerPhase(), debug.getOptions()).apply(graph, highContext); |
89 new LoweringPhase(new CanonicalizerPhase(), LoweringTool.StandardLoweringStage.HIGH_TIER).apply(graph, highContext); |
88 new LoweringPhase(createCanonicalizerPhase(), LoweringTool.StandardLoweringStage.HIGH_TIER).apply(graph, highContext); |
90 new GuardLoweringPhase().apply(graph, midContext); |
89 new GuardLoweringPhase().apply(graph, midContext); |
91 new LoweringPhase(new CanonicalizerPhase(), LoweringTool.StandardLoweringStage.MID_TIER).apply(graph, midContext); |
90 new LoweringPhase(createCanonicalizerPhase(), LoweringTool.StandardLoweringStage.MID_TIER).apply(graph, midContext); |
92 new WriteBarrierAdditionPhase().apply(graph, midContext); |
91 new WriteBarrierAdditionPhase().apply(graph, midContext); |
93 debug.dump(DebugContext.BASIC_LEVEL, graph, "After Write Barrier Addition"); |
92 debug.dump(DebugContext.BASIC_LEVEL, graph, "After Write Barrier Addition"); |
94 |
93 |
95 checkAssumptions(graph); |
94 checkAssumptions(graph); |
96 |
95 |