42 import org.graalvm.compiler.nodes.memory.ReadNode; |
42 import org.graalvm.compiler.nodes.memory.ReadNode; |
43 import org.graalvm.compiler.nodes.memory.WriteNode; |
43 import org.graalvm.compiler.nodes.memory.WriteNode; |
44 import org.graalvm.compiler.nodes.memory.address.OffsetAddressNode; |
44 import org.graalvm.compiler.nodes.memory.address.OffsetAddressNode; |
45 import org.graalvm.compiler.nodes.spi.LoweringTool; |
45 import org.graalvm.compiler.nodes.spi.LoweringTool; |
46 import org.graalvm.compiler.phases.OptimisticOptimizations; |
46 import org.graalvm.compiler.phases.OptimisticOptimizations; |
47 import org.graalvm.compiler.phases.common.CanonicalizerPhase; |
|
48 import org.graalvm.compiler.phases.common.GuardLoweringPhase; |
47 import org.graalvm.compiler.phases.common.GuardLoweringPhase; |
49 import org.graalvm.compiler.phases.common.LoweringPhase; |
48 import org.graalvm.compiler.phases.common.LoweringPhase; |
50 import org.graalvm.compiler.phases.common.WriteBarrierAdditionPhase; |
49 import org.graalvm.compiler.phases.common.WriteBarrierAdditionPhase; |
51 import org.graalvm.compiler.phases.common.inlining.InliningPhase; |
50 import org.graalvm.compiler.phases.common.inlining.InliningPhase; |
52 import org.graalvm.compiler.phases.common.inlining.policy.InlineEverythingPolicy; |
51 import org.graalvm.compiler.phases.common.inlining.policy.InlineEverythingPolicy; |
261 DebugContext debug = getDebugContext(); |
260 DebugContext debug = getDebugContext(); |
262 try (DebugContext.Scope s = debug.scope("WriteBarrierAdditionTest", snippet)) { |
261 try (DebugContext.Scope s = debug.scope("WriteBarrierAdditionTest", snippet)) { |
263 StructuredGraph graph = parseEager(snippet, AllowAssumptions.NO, debug); |
262 StructuredGraph graph = parseEager(snippet, AllowAssumptions.NO, debug); |
264 HighTierContext highContext = getDefaultHighTierContext(); |
263 HighTierContext highContext = getDefaultHighTierContext(); |
265 MidTierContext midContext = new MidTierContext(getProviders(), getTargetProvider(), OptimisticOptimizations.ALL, graph.getProfilingInfo()); |
264 MidTierContext midContext = new MidTierContext(getProviders(), getTargetProvider(), OptimisticOptimizations.ALL, graph.getProfilingInfo()); |
266 new InliningPhase(new InlineEverythingPolicy(), new CanonicalizerPhase()).apply(graph, highContext); |
265 new InliningPhase(new InlineEverythingPolicy(), createCanonicalizerPhase()).apply(graph, highContext); |
267 new CanonicalizerPhase().apply(graph, highContext); |
266 this.createCanonicalizerPhase().apply(graph, highContext); |
268 new LoweringPhase(new CanonicalizerPhase(), LoweringTool.StandardLoweringStage.HIGH_TIER).apply(graph, highContext); |
267 new LoweringPhase(this.createCanonicalizerPhase(), LoweringTool.StandardLoweringStage.HIGH_TIER).apply(graph, highContext); |
269 new GuardLoweringPhase().apply(graph, midContext); |
268 new GuardLoweringPhase().apply(graph, midContext); |
270 new LoweringPhase(new CanonicalizerPhase(), LoweringTool.StandardLoweringStage.MID_TIER).apply(graph, midContext); |
269 new LoweringPhase(this.createCanonicalizerPhase(), LoweringTool.StandardLoweringStage.MID_TIER).apply(graph, midContext); |
271 new WriteBarrierAdditionPhase().apply(graph, midContext); |
270 new WriteBarrierAdditionPhase().apply(graph, midContext); |
272 debug.dump(DebugContext.BASIC_LEVEL, graph, "After Write Barrier Addition"); |
271 debug.dump(DebugContext.BASIC_LEVEL, graph, "After Write Barrier Addition"); |
273 |
272 |
274 int barriers = 0; |
273 int barriers = 0; |
275 if (config.useG1GC) { |
274 if (config.useG1GC) { |