changeset 4338:04ebcabcba4f

misc cleanup * imports, asserts, ... * let StructuredGraph.removeSplit, etc. also remove the BeginNode * Eclipse formatting: leave the header comments intact
author Lukas Stadler <lukas.stadler@jku.at>
date Fri, 27 Jan 2012 17:07:03 +0100
parents b801d2f9e2b0
children 15ec30809d0f
files graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/alloc/simple/DataFlowAnalysis.java graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/phases/FloatingReadPhase.java graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/phases/GlobalValueNumberingPhase.java graal/com.oracle.max.graal.nodes/src/com/oracle/max/graal/nodes/IfNode.java graal/com.oracle.max.graal.nodes/src/com/oracle/max/graal/nodes/StructuredGraph.java graal/com.oracle.max.graal.nodes/src/com/oracle/max/graal/nodes/extended/LookupSwitchNode.java graal/com.oracle.max.graal.nodes/src/com/oracle/max/graal/nodes/java/InstanceOfNode.java mx/eclipse-settings/org.eclipse.jdt.core.prefs mx/eclipse-settings/org.eclipse.jdt.ui.prefs
diffstat 9 files changed, 53 insertions(+), 12 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/alloc/simple/DataFlowAnalysis.java	Fri Jan 27 00:40:26 2012 +0100
+++ b/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/alloc/simple/DataFlowAnalysis.java	Fri Jan 27 17:07:03 2012 +0100
@@ -22,7 +22,7 @@
  */
 package com.oracle.max.graal.alloc.simple;
 
-import static com.oracle.max.graal.compiler.lir.LIRPhiMapping.*;
+import static com.oracle.max.cri.ci.CiValueUtil.*;
 import static com.oracle.max.graal.alloc.util.ValueUtil.*;
 
 import java.util.*;
@@ -34,6 +34,7 @@
 import com.oracle.max.graal.compiler.alloc.*;
 import com.oracle.max.graal.compiler.lir.*;
 import com.oracle.max.graal.compiler.lir.LIRInstruction.ValueProcedure;
+import com.oracle.max.graal.compiler.lir.LIRPhiMapping.PhiValueProcedure;
 import com.oracle.max.graal.compiler.schedule.*;
 
 public class DataFlowAnalysis {
--- a/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/phases/FloatingReadPhase.java	Fri Jan 27 00:40:26 2012 +0100
+++ b/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/phases/FloatingReadPhase.java	Fri Jan 27 17:07:03 2012 +0100
@@ -31,7 +31,7 @@
 import com.oracle.max.graal.compiler.schedule.*;
 import com.oracle.max.graal.graph.*;
 import com.oracle.max.graal.nodes.*;
-import com.oracle.max.graal.nodes.PhiNode.*;
+import com.oracle.max.graal.nodes.PhiNode.PhiType;
 import com.oracle.max.graal.nodes.extended.*;
 
 public class FloatingReadPhase extends Phase {
--- a/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/phases/GlobalValueNumberingPhase.java	Fri Jan 27 00:40:26 2012 +0100
+++ b/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/phases/GlobalValueNumberingPhase.java	Fri Jan 27 17:07:03 2012 +0100
@@ -46,7 +46,9 @@
             if (n.getNodeClass().valueNumberable()) {
                 Node newNode = compilerGraph.findDuplicate(n);
                 if (newNode != null) {
-                    n.replaceAndDelete(newNode);
+                    assert !(n instanceof FixedNode || newNode instanceof FixedNode);
+                    n.replaceAtUsages(newNode);
+                    n.safeDelete();
                     if (GraalOptions.Meter) {
                         currentContext.metrics.GlobalValueNumberingHits++;
                     }
--- a/graal/com.oracle.max.graal.nodes/src/com/oracle/max/graal/nodes/IfNode.java	Fri Jan 27 00:40:26 2012 +0100
+++ b/graal/com.oracle.max.graal.nodes/src/com/oracle/max/graal/nodes/IfNode.java	Fri Jan 27 17:07:03 2012 +0100
@@ -25,6 +25,7 @@
 import java.util.*;
 
 import com.oracle.max.cri.ci.*;
+import com.oracle.max.graal.graph.*;
 import com.oracle.max.graal.nodes.spi.*;
 import com.oracle.max.graal.nodes.type.*;
 
@@ -86,7 +87,7 @@
      * @param istrue {@code true} if the true successor is requested, {@code false} otherwise
      * @return the corresponding successor
      */
-    public FixedNode successor(boolean istrue) {
+    public BeginNode successor(boolean istrue) {
         return blockSuccessor(istrue ? 0 : 1);
     }
 
--- a/graal/com.oracle.max.graal.nodes/src/com/oracle/max/graal/nodes/StructuredGraph.java	Fri Jan 27 00:40:26 2012 +0100
+++ b/graal/com.oracle.max.graal.nodes/src/com/oracle/max/graal/nodes/StructuredGraph.java	Fri Jan 27 17:07:03 2012 +0100
@@ -28,6 +28,7 @@
 import com.oracle.max.graal.graph.*;
 import com.oracle.max.graal.nodes.calc.*;
 import com.oracle.max.graal.nodes.java.*;
+import com.oracle.max.graal.nodes.util.*;
 
 
 /**
@@ -191,12 +192,38 @@
         assert node != null;
         assert node.usages().isEmpty();
         assert survivingSuccessor >= 0 && survivingSuccessor < node.blockSuccessorCount() : "invalid surviving successor " + survivingSuccessor + " for " + node;
-        FixedNode next = node.blockSuccessor(survivingSuccessor);
+        BeginNode begin = node.blockSuccessor(survivingSuccessor);
+        FixedNode next = begin.next();
+        begin.setNext(null);
         for (int i = 0; i < node.blockSuccessorCount(); i++) {
             node.setBlockSuccessor(i, null);
         }
         node.replaceAtPredecessors(next);
         node.safeDelete();
+        begin.safeDelete();
+    }
+
+    public void removeSplitPropagate(ControlSplitNode node, int survivingSuccessor) {
+        assert node != null;
+        assert node.usages().isEmpty();
+        assert survivingSuccessor >= 0 && survivingSuccessor < node.blockSuccessorCount() : "invalid surviving successor " + survivingSuccessor + " for " + node;
+        BeginNode begin = node.blockSuccessor(survivingSuccessor);
+        FixedNode next = begin.next();
+        begin.setNext(null);
+        for (int i = 0; i < node.blockSuccessorCount(); i++) {
+            BeginNode successor = node.blockSuccessor(i);
+            node.setBlockSuccessor(i, null);
+            if (successor != begin && successor.isAlive()) {
+                GraphUtil.killCFG(successor);
+            }
+        }
+        if (next.isAlive()) {
+            node.replaceAtPredecessors(next);
+            node.safeDelete();
+            begin.safeDelete();
+        } else {
+            assert node.isDeleted();
+        }
     }
 
     public void replaceSplit(ControlSplitNode node, Node replacement, int survivingSuccessor) {
@@ -212,24 +239,30 @@
     public void replaceSplitWithFixed(ControlSplitNode node, FixedWithNextNode replacement, int survivingSuccessor) {
         assert node != null && replacement != null && node.isAlive() && replacement.isAlive() : "cannot replace " + node + " with " + replacement;
         assert survivingSuccessor >= 0 && survivingSuccessor < node.blockSuccessorCount() : "invalid surviving successor " + survivingSuccessor + " for " + node;
-        FixedNode next = node.blockSuccessor(survivingSuccessor);
+        BeginNode begin = node.blockSuccessor(survivingSuccessor);
+        FixedNode next = begin.next();
+        begin.setNext(null);
         for (int i = 0; i < node.blockSuccessorCount(); i++) {
             node.setBlockSuccessor(i, null);
         }
         replacement.setNext(next);
         node.replaceAndDelete(replacement);
+        begin.safeDelete();
     }
 
     public void replaceSplitWithFloating(ControlSplitNode node, FloatingNode replacement, int survivingSuccessor) {
         assert node != null && replacement != null && node.isAlive() && replacement.isAlive() : "cannot replace " + node + " with " + replacement;
         assert survivingSuccessor >= 0 && survivingSuccessor < node.blockSuccessorCount() : "invalid surviving successor " + survivingSuccessor + " for " + node;
-        FixedNode next = node.blockSuccessor(survivingSuccessor);
+        BeginNode begin = node.blockSuccessor(survivingSuccessor);
+        FixedNode next = begin.next();
+        begin.setNext(null);
         for (int i = 0; i < node.blockSuccessorCount(); i++) {
             node.setBlockSuccessor(i, null);
         }
         node.replaceAtPredecessors(next);
         node.replaceAtUsages(replacement);
         node.safeDelete();
+        begin.safeDelete();
     }
 
     public void addAfterFixed(FixedWithNextNode node, FixedWithNextNode newNode) {
--- a/graal/com.oracle.max.graal.nodes/src/com/oracle/max/graal/nodes/extended/LookupSwitchNode.java	Fri Jan 27 00:40:26 2012 +0100
+++ b/graal/com.oracle.max.graal.nodes/src/com/oracle/max/graal/nodes/extended/LookupSwitchNode.java	Fri Jan 27 17:07:03 2012 +0100
@@ -41,6 +41,7 @@
      */
     public LookupSwitchNode(ValueNode value, BeginNode[] successors, int[] keys, double[] probability) {
         super(value, successors, probability);
+        assert successors.length == keys.length + 1;
         this.keys = keys;
     }
 
--- a/graal/com.oracle.max.graal.nodes/src/com/oracle/max/graal/nodes/java/InstanceOfNode.java	Fri Jan 27 00:40:26 2012 +0100
+++ b/graal/com.oracle.max.graal.nodes/src/com/oracle/max/graal/nodes/java/InstanceOfNode.java	Fri Jan 27 17:07:03 2012 +0100
@@ -34,7 +34,11 @@
  */
 public final class InstanceOfNode extends TypeCheckNode implements Canonicalizable, LIRLowerable {
 
-    @Data public final boolean negated;
+    @Data private final boolean negated;
+
+    public boolean negated() {
+        return negated;
+    }
 
     /**
      * Constructs a new InstanceOfNode.
@@ -71,8 +75,7 @@
             if (constant.isNull()) {
                 return ConstantNode.forBoolean(negated, graph());
             } else {
-                // this should never happen - non-null constants are always expected to provide an exactType
-                assert false;
+                assert false : "non-null constants are always expected to provide an exactType";
             }
         }
         return this;
--- a/mx/eclipse-settings/org.eclipse.jdt.core.prefs	Fri Jan 27 00:40:26 2012 +0100
+++ b/mx/eclipse-settings/org.eclipse.jdt.core.prefs	Fri Jan 27 17:07:03 2012 +0100
@@ -167,7 +167,7 @@
 org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
 org.eclipse.jdt.core.formatter.comment.format_block_comments=true
 org.eclipse.jdt.core.formatter.comment.format_comments=true
-org.eclipse.jdt.core.formatter.comment.format_header=true
+org.eclipse.jdt.core.formatter.comment.format_header=false
 org.eclipse.jdt.core.formatter.comment.format_html=true
 org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=true
 org.eclipse.jdt.core.formatter.comment.format_line_comments=true
--- a/mx/eclipse-settings/org.eclipse.jdt.ui.prefs	Fri Jan 27 00:40:26 2012 +0100
+++ b/mx/eclipse-settings/org.eclipse.jdt.ui.prefs	Fri Jan 27 17:07:03 2012 +0100
@@ -48,7 +48,7 @@
 cleanup_settings_version=2
 comment_clear_blank_lines=false
 comment_format_comments=true
-comment_format_header=true
+comment_format_header=false
 comment_format_html=true
 comment_format_source_code=true
 comment_indent_parameter_description=true