# HG changeset patch # User Gilles Duboscq # Date 1386760486 -3600 # Node ID 9b053d478a4e0a62269a56e03a99a2fbb23f2245 # Parent a3c559c0e460447c309693edd93219e68c882e49 Use the appropriate phases in order to change the guards stage diff -r a3c559c0e460 -r 9b053d478a4e graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/SnippetTemplate.java --- 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); } diff -r a3c559c0e460 -r 9b053d478a4e graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/MacroNode.java --- 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);