# HG changeset patch # User Roland Schatz # Date 1366111283 -7200 # Node ID 2cfdde00307640537641cd2993ec0ca543d3bfe5 # Parent c5fa76a208686767818f05f556d251ebfc5a7b0e Make IterativeConditionalEliminationPhase reentrant. diff -r c5fa76a20868 -r 2cfdde003076 graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/GraalCompiler.java --- a/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/GraalCompiler.java Tue Apr 16 13:21:22 2013 +0200 +++ b/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/GraalCompiler.java Tue Apr 16 13:21:23 2013 +0200 @@ -132,7 +132,7 @@ if (GraalOptions.ConditionalElimination && GraalOptions.OptCanonicalizer) { new CanonicalizerPhase.Instance(runtime, assumptions).apply(graph); - new IterativeConditionalEliminationPhase(runtime, assumptions).apply(graph); + new IterativeConditionalEliminationPhase().apply(graph, highTierContext); } } } @@ -169,7 +169,7 @@ } if (GraalOptions.ConditionalElimination && GraalOptions.OptCanonicalizer) { - new IterativeConditionalEliminationPhase(runtime, assumptions).apply(graph); + new IterativeConditionalEliminationPhase().apply(graph, highTierContext); } if (GraalOptions.OptEliminatePartiallyRedundantGuards) { diff -r c5fa76a20868 -r 2cfdde003076 graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/IterativeConditionalEliminationPhase.java --- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/IterativeConditionalEliminationPhase.java Tue Apr 16 13:21:22 2013 +0200 +++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/IterativeConditionalEliminationPhase.java Tue Apr 16 13:21:23 2013 +0200 @@ -24,27 +24,18 @@ import java.util.*; -import com.oracle.graal.api.code.*; -import com.oracle.graal.api.meta.*; import com.oracle.graal.graph.Graph.InputChangedListener; import com.oracle.graal.graph.*; import com.oracle.graal.nodes.*; import com.oracle.graal.phases.*; - -public class IterativeConditionalEliminationPhase extends Phase { +import com.oracle.graal.phases.tiers.*; - private final MetaAccessProvider runtime; - private final Assumptions assumptions; - - public IterativeConditionalEliminationPhase(MetaAccessProvider runtime, Assumptions assumptions) { - this.runtime = runtime; - this.assumptions = assumptions; - } +public class IterativeConditionalEliminationPhase extends BasePhase { @Override - protected void run(StructuredGraph graph) { + protected void run(StructuredGraph graph, PhaseContext context) { Set canonicalizationRoots = new HashSet<>(); - ConditionalEliminationPhase eliminate = new ConditionalEliminationPhase(runtime); + ConditionalEliminationPhase eliminate = new ConditionalEliminationPhase(context.getRuntime()); Listener listener = new Listener(canonicalizationRoots); while (true) { graph.trackInputChange(listener); @@ -53,7 +44,7 @@ if (canonicalizationRoots.isEmpty()) { break; } - new CanonicalizerPhase.Instance(runtime, assumptions, canonicalizationRoots, null).apply(graph); + new CanonicalizerPhase.Instance(context.getRuntime(), context.getAssumptions(), canonicalizationRoots, null).apply(graph); canonicalizationRoots.clear(); } } diff -r c5fa76a20868 -r 2cfdde003076 graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/phases/ea/IterativeInliningPhase.java --- a/graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/phases/ea/IterativeInliningPhase.java Tue Apr 16 13:21:22 2013 +0200 +++ b/graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/phases/ea/IterativeInliningPhase.java Tue Apr 16 13:21:23 2013 +0200 @@ -84,7 +84,7 @@ if (GraalOptions.ConditionalElimination && GraalOptions.OptCanonicalizer) { new CanonicalizerPhase().apply(graph, context); - new IterativeConditionalEliminationPhase(context.getRuntime(), context.getAssumptions()).apply(graph); + new IterativeConditionalEliminationPhase().apply(graph, context); } return progress;