changeset 7259:494d99e07614

Merge
author Gilles Duboscq <duboscq@ssw.jku.at>
date Tue, 18 Dec 2012 14:29:04 +0100
parents 9bee93f61522 (current diff) d0c4b6f8d67f (diff)
children 4558c8aedd5f 32e29e5df27e a4b84ba6dc2e
files
diffstat 3 files changed, 7 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 14:28:58 2012 +0100
+++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/CanonicalizerPhase.java	Tue Dec 18 14:29:04 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 14:28:58 2012 +0100
+++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/InliningPhase.java	Tue Dec 18 14:29:04 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();
 
--- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/TailDuplicationPhase.java	Tue Dec 18 14:28:58 2012 +0100
+++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/TailDuplicationPhase.java	Tue Dec 18 14:29:04 2012 +0100
@@ -409,6 +409,7 @@
             MergeNode newBottomMerge = graph.add(new MergeNode());
             newBottomMerge.setProbability(successor.probability());
             EndNode newBottomEnd = graph.add(new EndNode());
+            newBottomEnd.setProbability(successor.probability());
             newBottomMerge.addForwardEnd(newBottomEnd);
             newBottomMerge.setStateAfter(stateAfterMerge);
             ((FixedWithNextNode) successor.predecessor()).setNext(newBottomEnd);