changeset 13287:9b053d478a4e

Use the appropriate phases in order to change the guards stage
author Gilles Duboscq <duboscq@ssw.jku.at>
date Wed, 11 Dec 2013 12:14:46 +0100
parents a3c559c0e460
children 9c3c915b5f56
files graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/SnippetTemplate.java graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/MacroNode.java
diffstat 2 files changed, 15 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/SnippetTemplate.java	Tue Dec 10 17:34:48 2013 +0100
+++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/SnippetTemplate.java	Wed Dec 11 12:14:46 2013 +0100
@@ -577,11 +577,14 @@
             }
         } while (exploded);
 
+        GuardsStage guardsStage = args.cacheKey.guardsStage;
         // Perform lowering on the snippet
-        snippetCopy.setGuardsStage(args.cacheKey.guardsStage);
+        if (guardsStage.ordinal() >= GuardsStage.FIXED_DEOPTS.ordinal()) {
+            new GuardLoweringPhase().apply(snippetCopy, null);
+        }
+        snippetCopy.setGuardsStage(guardsStage);
         try (Scope s = Debug.scope("LoweringSnippetTemplate", snippetCopy)) {
-            PhaseContext c = new PhaseContext(providers, new Assumptions(false));
-            new LoweringPhase(new CanonicalizerPhase(true)).apply(snippetCopy, c);
+            new LoweringPhase(new CanonicalizerPhase(true)).apply(snippetCopy, phaseContext);
         } catch (Throwable e) {
             throw Debug.handle(e);
         }
--- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/MacroNode.java	Tue Dec 10 17:34:48 2013 +0100
+++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/MacroNode.java	Wed Dec 11 12:14:46 2013 +0100
@@ -31,6 +31,7 @@
 import com.oracle.graal.debug.Debug.Scope;
 import com.oracle.graal.graph.*;
 import com.oracle.graal.nodes.*;
+import com.oracle.graal.nodes.StructuredGraph.GuardsStage;
 import com.oracle.graal.nodes.extended.*;
 import com.oracle.graal.nodes.java.*;
 import com.oracle.graal.nodes.java.MethodCallTargetNode.InvokeKind;
@@ -96,9 +97,15 @@
      * @param replacementGraph a replacement (i.e., snippet or method substitution) graph
      */
     protected StructuredGraph lowerReplacement(final StructuredGraph replacementGraph, LoweringTool tool) {
-        replacementGraph.setGuardsStage(graph().getGuardsStage());
         final PhaseContext c = new PhaseContext(tool.getMetaAccess(), tool.getConstantReflection(), tool.getLowerer(), tool.getReplacements(), tool.assumptions());
-        try (Scope s = Debug.scope("LoweringReplacement", replacementGraph)) {
+        GuardsStage guardsStage = graph().getGuardsStage();
+        if (guardsStage.ordinal() >= GuardsStage.FIXED_DEOPTS.ordinal()) {
+            new GuardLoweringPhase().apply(replacementGraph, null);
+            if (guardsStage.ordinal() >= GuardsStage.AFTER_FSA.ordinal()) {
+                new FrameStateAssignmentPhase().apply(replacementGraph);
+            }
+        }
+        try (Scope s = Debug.scope("LoweringSnippetTemplate", replacementGraph)) {
             new LoweringPhase(new CanonicalizerPhase(true)).apply(replacementGraph, c);
         } catch (Throwable e) {
             throw Debug.handle(e);