changeset 2972:c7ce8d00c33f

Removed predecessorIndex array from the Node base class.
author Thomas Wuerthinger <thomas@wuerthinger.net>
date Wed, 15 Jun 2011 17:18:31 +0200
parents 8f1e2c8815b4
children ca2d8e027110
files graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/gen/LIRGenerator.java graal/com.oracle.max.graal.graph/src/com/oracle/max/graal/graph/Graph.java graal/com.oracle.max.graal.graph/src/com/oracle/max/graal/graph/Node.java graal/com.oracle.max.graal.graph/src/com/oracle/max/graal/graph/NodeArray.java
diffstat 4 files changed, 8 insertions(+), 42 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/gen/LIRGenerator.java	Wed Jun 15 17:13:34 2011 +0200
+++ b/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/gen/LIRGenerator.java	Wed Jun 15 17:18:31 2011 +0200
@@ -1438,7 +1438,7 @@
 
                 if (nextInstr instanceof Merge) {
                     Merge merge = (Merge) nextInstr;
-                    assert nextSuccIndex >= 0 : "nextSuccIndex=" + nextSuccIndex + ", lastNode=" + lastNode + ", nextInstr=" + nextInstr + "; preds=" + nextInstr.predecessors() + "; predIndex=" + nextInstr.predecessorsIndex();
+                    assert nextSuccIndex >= 0 : "nextSuccIndex=" + nextSuccIndex + ", lastNode=" + lastNode + ", nextInstr=" + nextInstr + "; preds=" + nextInstr.predecessors() + ";";
 
                     PhiResolver resolver = new PhiResolver(this);
                     for (Node n : merge.usages()) {
--- a/graal/com.oracle.max.graal.graph/src/com/oracle/max/graal/graph/Graph.java	Wed Jun 15 17:13:34 2011 +0200
+++ b/graal/com.oracle.max.graal.graph/src/com/oracle/max/graal/graph/Graph.java	Wed Jun 15 17:18:31 2011 +0200
@@ -208,32 +208,6 @@
                 }
             }
         }
-        /*
-        // re-wire successors
-        for (Entry<Node, Node> entry : newNodes.entrySet()) {
-            Node oldNode = entry.getKey();
-            Node node = entry.getValue();
-            for (int i = 0; i < oldNode.predecessors().size(); i++) {
-                Node pred = oldNode.predecessors().get(i);
-                int predIndex = oldNode.predecessorsIndex().get(i);
-                Node source = replacements.get(pred);
-                if (source == null) {
-                    source = newNodes.get(pred);
-                }
-                source.successors().set(predIndex,  node);
-            }
-        }
-        for (Entry<Node, Node> entry : replacements.entrySet()) {
-            Node oldNode = entry.getKey();
-            Node node = entry.getValue();
-            for (int i = 0; i < oldNode.predecessors().size(); i++) {
-                Node pred = oldNode.predecessors().get(i);
-                int predIndex = oldNode.predecessorsIndex().get(i);
-                if (newNodes.containsKey(pred)) {
-                    newNodes.get(pred).successors().set(predIndex, node);
-                }
-            }
-        }*/
         return newNodes;
     }
 }
--- a/graal/com.oracle.max.graal.graph/src/com/oracle/max/graal/graph/Node.java	Wed Jun 15 17:13:34 2011 +0200
+++ b/graal/com.oracle.max.graal.graph/src/com/oracle/max/graal/graph/Node.java	Wed Jun 15 17:18:31 2011 +0200
@@ -39,7 +39,6 @@
     final NodeArray successors;
     final ArrayList<Node> usages;
     final ArrayList<Node> predecessors;
-    final ArrayList<Integer> predecessorsIndex;
 
     public Node(int inputCount, int successorCount, Graph graph) {
         assert graph != null : "cannot create a node for a null graph";
@@ -49,17 +48,12 @@
         this.successors = new NodeArray(this, successorCount);
         this.predecessors = new ArrayList<Node>();
         this.usages = new ArrayList<Node>();
-        this.predecessorsIndex = new ArrayList<Integer>();
     }
 
     public List<Node> predecessors() {
         return Collections.unmodifiableList(predecessors);
     }
 
-    public List<Integer> predecessorsIndex() {
-        return Collections.unmodifiableList(predecessorsIndex);
-    }
-
     public List<Node> usages() {
         return Collections.unmodifiableList(usages);
     }
@@ -96,18 +90,19 @@
         }
         int z = 0;
         for (Node predecessor : predecessors) {
-            int predIndex = predecessorsIndex.get(z);
-            predecessor.successors.silentSet(predIndex, other);
+            for (int i=0; i<predecessor.successors.size(); i++) {
+                if (predecessor.successors.get(i) == this) {
+                    predecessor.successors.silentSet(i, other);
+                }
+            }
             ++z;
         }
         if (other != null) {
             other.usages.addAll(usages);
             other.predecessors.addAll(predecessors);
-            other.predecessorsIndex.addAll(predecessorsIndex);
         }
         usages.clear();
         predecessors.clear();
-        predecessorsIndex.clear();
         delete();
         return other;
     }
@@ -125,13 +120,11 @@
         }
         usages.clear();
         predecessors.clear();
-        predecessorsIndex.clear();
     }
 
     public void delete() {
         assert !isDeleted();
         assert checkDeletion() : "Could not delete " + this;
-        assert predecessorsIndex.size() == 0;
         for (int i = 0; i < inputs.size(); ++i) {
             inputs.set(i, Null);
         }
--- a/graal/com.oracle.max.graal.graph/src/com/oracle/max/graal/graph/NodeArray.java	Wed Jun 15 17:13:34 2011 +0200
+++ b/graal/com.oracle.max.graal.graph/src/com/oracle/max/graal/graph/NodeArray.java	Wed Jun 15 17:18:31 2011 +0200
@@ -145,15 +145,14 @@
                 if (old != null) {
                     for (int i = 0; i < old.predecessors.size(); ++i) {
                         Node cur = old.predecessors.get(i);
-                        if (cur == self() && old.predecessorsIndex.get(i) == index) {
+                        if (cur == self()) {
                             old.predecessors.remove(i);
-                            old.predecessorsIndex.remove(i);
+                            break;
                         }
                     }
                 }
                 if (node != null) {
                     node.predecessors.add(self());
-                    node.predecessorsIndex.add(index);
                 }
             }
         }