changeset 9136:2cfdde003076

Make IterativeConditionalEliminationPhase reentrant.
author Roland Schatz <roland.schatz@oracle.com>
date Tue, 16 Apr 2013 13:21:23 +0200
parents c5fa76a20868
children f5c6a9b0262f
files graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/GraalCompiler.java graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/IterativeConditionalEliminationPhase.java graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/phases/ea/IterativeInliningPhase.java
diffstat 3 files changed, 8 insertions(+), 17 deletions(-) [+]
line wrap: on
line diff
--- 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) {
--- 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<PhaseContext> {
 
     @Override
-    protected void run(StructuredGraph graph) {
+    protected void run(StructuredGraph graph, PhaseContext context) {
         Set<Node> 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();
         }
     }
--- 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;