changeset 2953:445233cd91df

added GraalOptions.TestGraphDuplication, fixed graph duplication
author Lukas Stadler <lukas.stadler@jku.at>
date Wed, 15 Jun 2011 11:21:53 +0200
parents ec86f14be4cf
children 859dbeadc042
files graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/GraalOptions.java graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/graph/IR.java graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/ir/If.java graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/ir/Local.java graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/lir/FrameMap.java graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/phases/DeadCodeEliminationPhase.java graal/com.oracle.max.graal.graph/src/com/oracle/max/graal/graph/Node.java
diffstat 7 files changed, 13 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/GraalOptions.java	Wed Jun 15 09:50:02 2011 +0200
+++ b/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/GraalOptions.java	Wed Jun 15 11:21:53 2011 +0200
@@ -57,6 +57,8 @@
     public static boolean BailoutOnException                 = ____;
     public static boolean DeoptALot                          = ____;
 
+    public static boolean TestGraphDuplication               = ____;
+
     /**
      * See {@link Filter#Filter(String, Object)}.
      */
@@ -105,7 +107,7 @@
     // Code generator settings
     public static boolean GenLIR                             = true;
     public static boolean GenCode                            = true;
-    public static boolean UseBranchPrediction                = ____;
+    public static boolean UseBranchPrediction                = true;
 
     public static boolean UseConstDirectCall                 = ____;
 
--- a/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/graph/IR.java	Wed Jun 15 09:50:02 2011 +0200
+++ b/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/graph/IR.java	Wed Jun 15 11:21:53 2011 +0200
@@ -70,7 +70,12 @@
     public void build() {
         new GraphBuilderPhase(compilation, compilation.method, false, false).apply(compilation.graph);
         printGraph("After GraphBuilding", compilation.graph);
-        //new DuplicationPhase().apply(compilation.graph);
+
+        if (GraalOptions.TestGraphDuplication) {
+            new DuplicationPhase().apply(compilation.graph);
+            printGraph("After Duplication", compilation.graph);
+        }
+
         new DeadCodeEliminationPhase().apply(compilation.graph);
         printGraph("After DeadCodeElimination", compilation.graph);
 
--- a/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/ir/If.java	Wed Jun 15 09:50:02 2011 +0200
+++ b/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/ir/If.java	Wed Jun 15 11:21:53 2011 +0200
@@ -109,7 +109,7 @@
 
     @Override
     public String shortName() {
-        return "If " + compare().condition.operator;
+        return "If " + (compare() == null ? "?" : compare().condition.operator);
     }
 
     @Override
--- a/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/ir/Local.java	Wed Jun 15 09:50:02 2011 +0200
+++ b/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/ir/Local.java	Wed Jun 15 11:21:53 2011 +0200
@@ -115,7 +115,7 @@
 
     @Override
     public Node copy(Graph into) {
-        Local x = new Local(kind, index, start(), into);
+        Local x = new Local(kind, index, null, into);
         x.setDeclaredType(declaredType());
         return x;
     }
--- a/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/lir/FrameMap.java	Wed Jun 15 09:50:02 2011 +0200
+++ b/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/lir/FrameMap.java	Wed Jun 15 11:21:53 2011 +0200
@@ -74,10 +74,6 @@
  * </pre>
  * Note that the size {@link Bytecodes#ALLOCA ALLOCA} blocks and {@code monitor}s in the frame may be greater
  * than the size of a {@linkplain CiTarget#spillSlotSize spill slot}.
- *
- * @author Thomas Wuerthinger
- * @author Ben L. Titzer
- * @author Doug Simon
  */
 public final class FrameMap {
 
--- a/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/phases/DeadCodeEliminationPhase.java	Wed Jun 15 09:50:02 2011 +0200
+++ b/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/phases/DeadCodeEliminationPhase.java	Wed Jun 15 11:21:53 2011 +0200
@@ -100,6 +100,7 @@
         for (Node node : graph.getNodes()) {
             if (node != Node.Null && !flood.isMarked(node) && isCFG(node)) {
                 if (node instanceof LoopEnd) {
+                    assert ((LoopEnd) node).loopBegin() != null : "node " + node;
                     brokenLoops.add(((LoopEnd) node).loopBegin());
                 }
                 // iterate backwards so that the predecessor indexes in removePhiPredecessor are correct
--- a/graal/com.oracle.max.graal.graph/src/com/oracle/max/graal/graph/Node.java	Wed Jun 15 09:50:02 2011 +0200
+++ b/graal/com.oracle.max.graal.graph/src/com/oracle/max/graal/graph/Node.java	Wed Jun 15 11:21:53 2011 +0200
@@ -126,6 +126,7 @@
         usages.clear();
         predecessors.clear();
         predecessorsIndex.clear();
+        delete();
     }
 
     public void delete() {