Mercurial > hg > graal-compiler
changeset 2971:8f1e2c8815b4
Do not care about predecessor order when duplicating nodes.
author | Thomas Wuerthinger <thomas@wuerthinger.net> |
---|---|
date | Wed, 15 Jun 2011 17:13:34 +0200 |
parents | fe44e684f1cb |
children | c7ce8d00c33f |
files | graal/com.oracle.max.graal.graph/src/com/oracle/max/graal/graph/Graph.java |
diffstat | 1 files changed, 26 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/graal/com.oracle.max.graal.graph/src/com/oracle/max/graal/graph/Graph.java Wed Jun 15 17:09:25 2011 +0200 +++ b/graal/com.oracle.max.graal.graph/src/com/oracle/max/graal/graph/Graph.java Wed Jun 15 17:13:34 2011 +0200 @@ -184,6 +184,31 @@ } } } + + // re-wire successors + for (Entry<Node, Node> entry : newNodes.entrySet()) { + Node oldNode = entry.getKey(); + Node node = entry.getValue(); + for (int i = 0; i < oldNode.successors().size(); i++) { + Node succ = oldNode.successors().get(i); + Node target = replacements.get(succ); + if (target == null) { + target = newNodes.get(succ); + } + node.successors().setOrExpand(i, target); + } + } + for (Entry<Node, Node> entry : replacements.entrySet()) { + Node oldNode = entry.getKey(); + Node node = entry.getValue(); + for (int i = 0; i < oldNode.successors().size(); i++) { + Node succ = oldNode.successors().get(i); + if (newNodes.containsKey(succ)) { + node.successors().setOrExpand(i, newNodes.get(succ)); + } + } + } + /* // re-wire successors for (Entry<Node, Node> entry : newNodes.entrySet()) { Node oldNode = entry.getKey(); @@ -208,7 +233,7 @@ newNodes.get(pred).successors().set(predIndex, node); } } - } + }*/ return newNodes; } }