# HG changeset patch # User Gilles Duboscq # Date 1341408231 -7200 # Node ID ac2970c9ebdf3c733f2d1d76886b89b99e55adbd # Parent 3842904e46c2399c7345050a1a9601034a3b73cc Small cleanups and add snapshotTo method to node iterables diff -r 3842904e46c2 -r ac2970c9ebdf graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/phases/EscapeAnalysisPhase.java --- a/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/phases/EscapeAnalysisPhase.java Tue Jul 03 16:11:04 2012 +0200 +++ b/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/phases/EscapeAnalysisPhase.java Wed Jul 04 15:23:51 2012 +0200 @@ -169,7 +169,7 @@ if (virtual.fieldsCount() > 0) { final BlockExitState startState = new BlockExitState(escapeFields, virtual); - final PostOrderNodeIterator iterator = new PostOrderNodeIterator(next, startState) { + new PostOrderNodeIterator(next, startState) { @Override protected void node(FixedNode curNode) { op.updateState(virtual, curNode, fields, state.fieldState); @@ -183,8 +183,7 @@ ((StateSplit) curNode).stateAfter().addVirtualObjectMapping(v); } } - }; - iterator.apply(); + }.apply(); } } } diff -r 3842904e46c2 -r ac2970c9ebdf graal/com.oracle.graal.graph/src/com/oracle/graal/graph/NodeList.java --- a/graal/com.oracle.graal.graph/src/com/oracle/graal/graph/NodeList.java Tue Jul 03 16:11:04 2012 +0200 +++ b/graal/com.oracle.graal.graph/src/com/oracle/graal/graph/NodeList.java Wed Jul 04 15:23:51 2012 +0200 @@ -55,7 +55,7 @@ this.nodes = new Node[elements.length]; for (int i = 0; i < elements.length; i++) { this.nodes[i] = elements[i]; - assert this.nodes[i] == null || !this.nodes[i].isDeleted(); + assert this.nodes[i] == null || !this.nodes[i].isDeleted() : "Initializing nodelist with deleted element : " + nodes[i]; } } } @@ -254,6 +254,13 @@ return (List) Arrays.asList(Arrays.copyOf(this.nodes, this.size)); } + @Override + public void snapshotTo(List to) { + for (int i = 0; i < size; i++) { + to.add(get(i)); + } + } + @SuppressWarnings("unchecked") public void setAll(NodeList values) { incModCount(); diff -r 3842904e46c2 -r ac2970c9ebdf graal/com.oracle.graal.graph/src/com/oracle/graal/graph/iterators/AbstractNodeIterable.java --- a/graal/com.oracle.graal.graph/src/com/oracle/graal/graph/iterators/AbstractNodeIterable.java Tue Jul 03 16:11:04 2012 +0200 +++ b/graal/com.oracle.graal.graph/src/com/oracle/graal/graph/iterators/AbstractNodeIterable.java Wed Jul 04 15:23:51 2012 +0200 @@ -65,6 +65,12 @@ return list; } @Override + public void snapshotTo(List to) { + for (T n : this) { + to.add(n); + } + } + @Override public T first() { Iterator iterator = iterator(); if (iterator.hasNext()) { diff -r 3842904e46c2 -r ac2970c9ebdf graal/com.oracle.graal.graph/src/com/oracle/graal/graph/iterators/NodeIterable.java --- a/graal/com.oracle.graal.graph/src/com/oracle/graal/graph/iterators/NodeIterable.java Tue Jul 03 16:11:04 2012 +0200 +++ b/graal/com.oracle.graal.graph/src/com/oracle/graal/graph/iterators/NodeIterable.java Wed Jul 04 15:23:51 2012 +0200 @@ -44,6 +44,8 @@ List snapshot(); + void snapshotTo(List to); + T first(); int count(); diff -r 3842904e46c2 -r ac2970c9ebdf graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/NewArrayNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/NewArrayNode.java Tue Jul 03 16:11:04 2012 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/NewArrayNode.java Wed Jul 04 15:23:51 2012 +0200 @@ -125,12 +125,13 @@ AccessIndexedNode x = (AccessIndexedNode) current; if (GraphUtil.unProxify(x.array()) == node) { int index = ((AccessIndexedNode) current).index().asConstant().asInt(); + StructuredGraph graph = (StructuredGraph) x.graph(); if (current instanceof LoadIndexedNode) { x.replaceAtUsages(fieldState[index]); - ((StructuredGraph) x.graph()).removeFixed(x); + graph.removeFixed(x); } else if (current instanceof StoreIndexedNode) { fieldState[index] = ((StoreIndexedNode) x).value(); - ((StructuredGraph) x.graph()).removeFixed(x); + graph.removeFixed(x); return index; } }