changeset 16101:99e2e006ade2

do not zap inputs and successors in Node.safeDelete
author Lukas Stadler <lukas.stadler@oracle.com>
date Fri, 13 Jun 2014 18:19:58 +0200
parents 13e471b673f3
children 64d8c6c8a00c 1a6746681b43
files graal/com.oracle.graal.graph/src/com/oracle/graal/graph/Node.java
diffstat 1 files changed, 16 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.graph/src/com/oracle/graal/graph/Node.java	Fri Jun 13 18:18:57 2014 +0200
+++ b/graal/com.oracle.graal.graph/src/com/oracle/graal/graph/Node.java	Fri Jun 13 18:19:58 2014 +0200
@@ -735,9 +735,7 @@
         }
     }
 
-    public void clearInputs() {
-        assert assertFalse(isDeleted(), "cannot clear inputs of deleted node");
-
+    private void unregisterInputs() {
         for (Node input : inputs()) {
             if (input.recordsUsages()) {
                 removeThisFromUsages(input);
@@ -746,6 +744,12 @@
                 }
             }
         }
+    }
+
+    public void clearInputs() {
+        assert assertFalse(isDeleted(), "cannot clear inputs of deleted node");
+
+        unregisterInputs();
         getNodeClass().clearInputs(this);
     }
 
@@ -753,13 +757,17 @@
         return n.removeUsage(this);
     }
 
-    public void clearSuccessors() {
-        assert assertFalse(isDeleted(), "cannot clear successors of deleted node");
-
+    private void unregisterSuccessors() {
         for (Node successor : successors()) {
             assert assertTrue(successor.predecessor == this, "wrong predecessor in old successor (%s): %s", successor, successor.predecessor);
             successor.predecessor = null;
         }
+    }
+
+    public void clearSuccessors() {
+        assert assertFalse(isDeleted(), "cannot clear successors of deleted node");
+
+        unregisterSuccessors();
         getNodeClass().clearSuccessors(this);
     }
 
@@ -777,8 +785,8 @@
      */
     public void safeDelete() {
         assert checkDeletion();
-        clearInputs();
-        clearSuccessors();
+        unregisterInputs();
+        unregisterSuccessors();
         graph.unregister(this);
         id = DELETED_ID_START - id;
         assert isDeleted();