hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.virtual/src/org/graalvm/compiler/virtual/phases/ea/EarlyReadEliminationPhase.java
changeset 46551 d01034a83ab2
parent 46344 694c102fd8ed
equal deleted inserted replaced
46550:34a17324cd65 46551:d01034a83ab2
    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;