Mercurial > hg > graal-compiler
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);