Mercurial > hg > graal-compiler
changeset 7256:d0c4b6f8d67f
canonicalize invoke usages during inlining
author | Lukas Stadler <lukas.stadler@jku.at> |
---|---|
date | Tue, 18 Dec 2012 13:22:20 +0100 |
parents | 95a685941e10 |
children | 494d99e07614 707e9cca11de |
files | graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/CanonicalizerPhase.java graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/InliningPhase.java |
diffstat | 2 files changed, 6 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/CanonicalizerPhase.java Tue Dec 18 13:21:37 2012 +0100 +++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/CanonicalizerPhase.java Tue Dec 18 13:22:20 2012 +0100 @@ -78,7 +78,7 @@ this(target, runtime, assumptions, null, newNodesMark); } - private CanonicalizerPhase(TargetDescription target, MetaAccessProvider runtime, Assumptions assumptions, Iterable<Node> workingSet, int newNodesMark) { + public CanonicalizerPhase(TargetDescription target, MetaAccessProvider runtime, Assumptions assumptions, Iterable<Node> workingSet, int newNodesMark) { this.newNodesMark = newNodesMark; this.target = target; this.assumptions = assumptions; @@ -91,13 +91,13 @@ protected void run(StructuredGraph graph) { if (initWorkingSet == null) { workList = graph.createNodeWorkList(newNodesMark == 0, MAX_ITERATION_PER_NODE); - if (newNodesMark > 0) { - workList.addAll(graph.getNewNodes(newNodesMark)); - } } else { workList = graph.createNodeWorkList(false, MAX_ITERATION_PER_NODE); workList.addAll(initWorkingSet); } + if (newNodesMark > 0) { + workList.addAll(graph.getNewNodes(newNodesMark)); + } tool = new Tool(workList, runtime, target, assumptions); processWorkSet(graph); }
--- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/InliningPhase.java Tue Dec 18 13:21:37 2012 +0100 +++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/InliningPhase.java Tue Dec 18 13:22:20 2012 +0100 @@ -85,11 +85,12 @@ if (isWorthInlining) { int mark = graph.getMark(); try { + List<Node> invokeUsages = candidate.invoke().node().usages().snapshot(); candidate.inline(graph, runtime, this, assumptions); Debug.dump(graph, "after %s", candidate); Iterable<Node> newNodes = graph.getNewNodes(mark); if (GraalOptions.OptCanonicalizer) { - new CanonicalizerPhase(target, runtime, assumptions, mark).apply(graph); + new CanonicalizerPhase(target, runtime, assumptions, invokeUsages, mark).apply(graph); } metricInliningPerformed.increment();