Mercurial > hg > graal-jvmci-8
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();