hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.virtual/src/org/graalvm/compiler/virtual/phases/ea/EarlyReadEliminationPhase.java
equal
deleted
inserted
replaced
30 import org.graalvm.compiler.phases.common.CanonicalizerPhase; |
30 import org.graalvm.compiler.phases.common.CanonicalizerPhase; |
31 import org.graalvm.compiler.phases.tiers.PhaseContext; |
31 import org.graalvm.compiler.phases.tiers.PhaseContext; |
32 |
32 |
33 public class EarlyReadEliminationPhase extends EffectsPhase<PhaseContext> { |
33 public class EarlyReadEliminationPhase extends EffectsPhase<PhaseContext> { |
34 |
34 |
|
35 private final boolean considerGuards; |
|
36 |
35 public EarlyReadEliminationPhase(CanonicalizerPhase canonicalizer) { |
37 public EarlyReadEliminationPhase(CanonicalizerPhase canonicalizer) { |
36 super(1, canonicalizer, true); |
38 super(1, canonicalizer, true); |
|
39 this.considerGuards = true; |
|
40 } |
|
41 |
|
42 public EarlyReadEliminationPhase(CanonicalizerPhase canonicalizer, boolean considerGuards) { |
|
43 super(1, canonicalizer, true); |
|
44 this.considerGuards = considerGuards; |
37 } |
45 } |
38 |
46 |
39 @Override |
47 @Override |
40 protected void run(StructuredGraph graph, PhaseContext context) { |
48 protected void run(StructuredGraph graph, PhaseContext context) { |
41 if (VirtualUtil.matches(graph, EscapeAnalyzeOnly.getValue(graph.getOptions()))) { |
49 if (VirtualUtil.matches(graph, EscapeAnalyzeOnly.getValue(graph.getOptions()))) { |
44 } |
52 } |
45 |
53 |
46 @Override |
54 @Override |
47 protected Closure<?> createEffectsClosure(PhaseContext context, ScheduleResult schedule, ControlFlowGraph cfg) { |
55 protected Closure<?> createEffectsClosure(PhaseContext context, ScheduleResult schedule, ControlFlowGraph cfg) { |
48 assert schedule == null; |
56 assert schedule == null; |
49 return new ReadEliminationClosure(cfg); |
57 return new ReadEliminationClosure(cfg, considerGuards); |
50 } |
58 } |
51 |
59 |
52 @Override |
60 @Override |
53 public float codeSizeIncrease() { |
61 public float codeSizeIncrease() { |
54 return 2f; |
62 return 2f; |