# HG changeset patch # User Thomas Wuerthinger # Date 1422010356 -3600 # Node ID ff232ff8d0280420cb6dada1561810a69254ac0f # Parent a565742332531998a910f688d72192f66a64470a Add utility Node#hasNoUsages. diff -r a56574233253 -r ff232ff8d028 graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/GraalCompilerTest.java --- a/graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/GraalCompilerTest.java Fri Jan 23 11:28:20 2015 +0100 +++ b/graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/GraalCompilerTest.java Fri Jan 23 11:52:36 2015 +0100 @@ -217,7 +217,7 @@ protected int countUnusedConstants(StructuredGraph graph) { int total = 0; for (ConstantNode node : getConstantNodes(graph)) { - if (node.usages().isEmpty()) { + if (node.hasNoUsages()) { total++; } } diff -r a56574233253 -r ff232ff8d028 graal/com.oracle.graal.graph/src/com/oracle/graal/graph/Node.java --- a/graal/com.oracle.graal.graph/src/com/oracle/graal/graph/Node.java Fri Jan 23 11:28:20 2015 +0100 +++ b/graal/com.oracle.graal.graph/src/com/oracle/graal/graph/Node.java Fri Jan 23 11:52:36 2015 +0100 @@ -309,6 +309,13 @@ } /** + * Checks whether this node has no usages. + */ + public final boolean hasNoUsages() { + return this.usage0 == null; + } + + /** * Finds the index of the last non-null entry in a node array. The search assumes that all * non-null entries precede the first null entry in the array. * @@ -564,7 +571,7 @@ if (newInput != null) { newInput.addUsage(this); } - if (oldInput != null && oldInput.usages().isEmpty()) { + if (oldInput != null && oldInput.hasNoUsages()) { maybeNotifyZeroUsages(oldInput); } } @@ -740,7 +747,7 @@ private void unregisterInputs() { for (Node input : inputs()) { removeThisFromUsages(input); - if (input.usages().isEmpty()) { + if (input.hasNoUsages()) { maybeNotifyZeroUsages(input); } } @@ -772,7 +779,7 @@ } private boolean checkDeletion() { - assertTrue(usages().isEmpty(), "cannot delete node %s because of usages: %s", this, usages()); + assertTrue(hasNoUsages(), "cannot delete node %s because of usages: %s", this, usages()); assertTrue(predecessor == null, "cannot delete node %s because of predecessor: %s", this, predecessor); return true; } @@ -1082,7 +1089,7 @@ } if (precision > 0) { - if (!usages().isEmpty()) { + if (!hasNoUsages()) { formatter.format(" usages={"); int z = 0; for (Node usage : usages()) { diff -r a56574233253 -r ff232ff8d028 graal/com.oracle.graal.graph/src/com/oracle/graal/graph/NodeClass.java --- a/graal/com.oracle.graal.graph/src/com/oracle/graal/graph/NodeClass.java Fri Jan 23 11:28:20 2015 +0100 +++ b/graal/com.oracle.graal.graph/src/com/oracle/graal/graph/NodeClass.java Fri Jan 23 11:52:36 2015 +0100 @@ -732,7 +732,7 @@ Fingerprint.submit("duplicating %s", node); } Node newNode = node.clone(graph, WithAllEdges); - assert newNode.inputs().isEmpty() || newNode.usages().isEmpty(); + assert newNode.inputs().isEmpty() || newNode.hasNoUsages(); assert newNode.getClass() == node.getClass(); newNodes.put(node, newNode); } diff -r a56574233253 -r ff232ff8d028 graal/com.oracle.graal.graph/src/com/oracle/graal/graph/NodeInputList.java --- a/graal/com.oracle.graal.graph/src/com/oracle/graal/graph/NodeInputList.java Fri Jan 23 11:28:20 2015 +0100 +++ b/graal/com.oracle.graal.graph/src/com/oracle/graal/graph/NodeInputList.java Fri Jan 23 11:52:36 2015 +0100 @@ -40,17 +40,17 @@ public NodeInputList(Node self, T[] elements) { super(self, elements); - assert self.usages().isEmpty(); + assert self.hasNoUsages(); } public NodeInputList(Node self, List elements) { super(self, elements); - assert self.usages().isEmpty(); + assert self.hasNoUsages(); } public NodeInputList(Node self, Collection elements) { super(self, elements); - assert self.usages().isEmpty(); + assert self.hasNoUsages(); } @Override diff -r a56574233253 -r ff232ff8d028 graal/com.oracle.graal.graph/src/com/oracle/graal/graph/NodeSuccessorList.java --- a/graal/com.oracle.graal.graph/src/com/oracle/graal/graph/NodeSuccessorList.java Fri Jan 23 11:28:20 2015 +0100 +++ b/graal/com.oracle.graal.graph/src/com/oracle/graal/graph/NodeSuccessorList.java Fri Jan 23 11:52:36 2015 +0100 @@ -40,12 +40,12 @@ public NodeSuccessorList(Node self, T[] elements) { super(self, elements); - assert self.usages().isEmpty(); + assert self.hasNoUsages(); } public NodeSuccessorList(Node self, List elements) { super(self, elements); - assert self.usages().isEmpty(); + assert self.hasNoUsages(); } @Override diff -r a56574233253 -r ff232ff8d028 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/SnippetAnchorNode.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/SnippetAnchorNode.java Fri Jan 23 11:28:20 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/SnippetAnchorNode.java Fri Jan 23 11:52:36 2015 +0100 @@ -40,7 +40,7 @@ BeginNode prevBegin = BeginNode.prevBegin(this); replaceAtUsages(InputType.Anchor, prevBegin); replaceAtUsages(InputType.Guard, prevBegin); - if (usages().isEmpty()) { + if (hasNoUsages()) { graph().removeFixed(this); } } diff -r a56574233253 -r ff232ff8d028 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/ClassGetHubNode.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/ClassGetHubNode.java Fri Jan 23 11:28:20 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/ClassGetHubNode.java Fri Jan 23 11:52:36 2015 +0100 @@ -56,7 +56,7 @@ @Override public Node canonical(CanonicalizerTool tool) { - if (usages().isEmpty()) { + if (hasNoUsages()) { return null; } else { if (clazz.isConstant()) { diff -r a56574233253 -r ff232ff8d028 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/HubGetClassNode.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/HubGetClassNode.java Fri Jan 23 11:28:20 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/HubGetClassNode.java Fri Jan 23 11:52:36 2015 +0100 @@ -52,7 +52,7 @@ @Override public Node canonical(CanonicalizerTool tool) { - if (usages().isEmpty()) { + if (hasNoUsages()) { return null; } else { MetaAccessProvider metaAccess = tool.getMetaAccess(); diff -r a56574233253 -r ff232ff8d028 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/KlassLayoutHelperNode.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/KlassLayoutHelperNode.java Fri Jan 23 11:28:20 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/KlassLayoutHelperNode.java Fri Jan 23 11:52:36 2015 +0100 @@ -79,7 +79,7 @@ @Override public Node canonical(CanonicalizerTool tool) { - if (usages().isEmpty()) { + if (hasNoUsages()) { return null; } else { if (klass.isConstant()) { diff -r a56574233253 -r ff232ff8d028 graal/com.oracle.graal.java/src/com/oracle/graal/java/GraphBuilderPhase.java --- a/graal/com.oracle.graal.java/src/com/oracle/graal/java/GraphBuilderPhase.java Fri Jan 23 11:28:20 2015 +0100 +++ b/graal/com.oracle.graal.java/src/com/oracle/graal/java/GraphBuilderPhase.java Fri Jan 23 11:52:36 2015 +0100 @@ -115,7 +115,7 @@ // remove dead parameters for (ParameterNode param : currentGraph.getNodes(ParameterNode.class)) { - if (param.usages().isEmpty()) { + if (param.hasNoUsages()) { assert param.inputs().isEmpty(); param.safeDelete(); } diff -r a56574233253 -r ff232ff8d028 graal/com.oracle.graal.loop/src/com/oracle/graal/loop/DerivedScaledInductionVariable.java --- a/graal/com.oracle.graal.loop/src/com/oracle/graal/loop/DerivedScaledInductionVariable.java Fri Jan 23 11:28:20 2015 +0100 +++ b/graal/com.oracle.graal.loop/src/com/oracle/graal/loop/DerivedScaledInductionVariable.java Fri Jan 23 11:52:36 2015 +0100 @@ -123,7 +123,7 @@ @Override public void deleteUnusedNodes() { - if (scale.isAlive() && scale.usages().isEmpty()) { + if (scale.isAlive() && scale.hasNoUsages()) { GraphUtil.killWithUnusedFloatingInputs(scale); } } diff -r a56574233253 -r ff232ff8d028 graal/com.oracle.graal.loop/src/com/oracle/graal/loop/LoopFragment.java --- a/graal/com.oracle.graal.loop/src/com/oracle/graal/loop/LoopFragment.java Fri Jan 23 11:28:20 2015 +0100 +++ b/graal/com.oracle.graal.loop/src/com/oracle/graal/loop/LoopFragment.java Fri Jan 23 11:52:36 2015 +0100 @@ -346,7 +346,7 @@ boolean newEarlyExitIsLoopExit = newEarlyExit instanceof LoopExitNode; for (ProxyNode vpn : loopEarlyExit.proxies().snapshot()) { - if (vpn.usages().isEmpty()) { + if (vpn.hasNoUsages()) { continue; } final ValueNode replaceWith; diff -r a56574233253 -r ff232ff8d028 graal/com.oracle.graal.loop/src/com/oracle/graal/loop/LoopFragmentInside.java --- a/graal/com.oracle.graal.loop/src/com/oracle/graal/loop/LoopFragmentInside.java Fri Jan 23 11:28:20 2015 +0100 +++ b/graal/com.oracle.graal.loop/src/com/oracle/graal/loop/LoopFragmentInside.java Fri Jan 23 11:52:36 2015 +0100 @@ -213,7 +213,7 @@ markStateNodes(loopBegin, usagesToPatch); for (PhiNode phi : loopBegin.phis().snapshot()) { - if (phi.usages().isEmpty()) { + if (phi.hasNoUsages()) { continue; } ValueNode first; @@ -253,7 +253,7 @@ } } - for (PhiNode deadPhi : loopBegin.phis().filter(n -> n.usages().isEmpty()).snapshot()) { + for (PhiNode deadPhi : loopBegin.phis().filter(n -> n.hasNoUsages()).snapshot()) { if (deadPhi.isAlive()) { GraphUtil.killWithUnusedFloatingInputs(deadPhi); } @@ -309,7 +309,7 @@ StructuredGraph graph = graph(); if (endsToMerge.size() == 1) { AbstractEndNode end = endsToMerge.get(0); - assert end.usages().isEmpty(); + assert end.hasNoUsages(); newExit = graph.add(new BeginNode()); end.replaceAtPredecessor(newExit); end.safeDelete(); @@ -328,7 +328,7 @@ } for (final PhiNode phi : loopBegin.phis().snapshot()) { - if (phi.usages().isEmpty()) { + if (phi.hasNoUsages()) { continue; } final PhiNode firstPhi = patchPhi(graph, phi, newExitMerge); diff -r a56574233253 -r ff232ff8d028 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/BeginNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/BeginNode.java Fri Jan 23 11:28:20 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/BeginNode.java Fri Jan 23 11:52:36 2015 +0100 @@ -78,7 +78,7 @@ } private void evacuateGuards(FixedNode evacuateFrom) { - if (!usages().isEmpty()) { + if (!hasNoUsages()) { BeginNode prevBegin = prevBegin(evacuateFrom); assert prevBegin != null; for (Node anchored : anchored().snapshot()) { diff -r a56574233253 -r ff232ff8d028 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/FixedGuardNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/FixedGuardNode.java Fri Jan 23 11:28:20 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/FixedGuardNode.java Fri Jan 23 11:52:36 2015 +0100 @@ -60,7 +60,7 @@ graph().removeFixed(this); } else if (condition() instanceof ShortCircuitOrNode) { ShortCircuitOrNode shortCircuitOr = (ShortCircuitOrNode) condition(); - if (isNegated() && usages().isEmpty()) { + if (isNegated() && hasNoUsages()) { graph().addAfterFixed(this, graph().add(new FixedGuardNode(shortCircuitOr.getY(), getReason(), getAction(), !shortCircuitOr.isYNegated()))); graph().replaceFixedWithFixed(this, graph().add(new FixedGuardNode(shortCircuitOr.getX(), getReason(), getAction(), !shortCircuitOr.isXNegated()))); } diff -r a56574233253 -r ff232ff8d028 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/IfNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/IfNode.java Fri Jan 23 11:28:20 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/IfNode.java Fri Jan 23 11:52:36 2015 +0100 @@ -176,7 +176,7 @@ } return; } - if (trueSuccessor().usages().isEmpty() && falseSuccessor().usages().isEmpty()) { + if (trueSuccessor().hasNoUsages() && falseSuccessor().hasNoUsages()) { pushNodesThroughIf(tool); @@ -189,7 +189,7 @@ return; } - if (falseSuccessor().usages().isEmpty() && (!(falseSuccessor() instanceof LoopExitNode)) && falseSuccessor().next() instanceof IfNode) { + if (falseSuccessor().hasNoUsages() && (!(falseSuccessor() instanceof LoopExitNode)) && falseSuccessor().next() instanceof IfNode) { BeginNode intermediateBegin = falseSuccessor(); IfNode nextIf = (IfNode) intermediateBegin.next(); double probabilityB = (1.0 - this.trueSuccessorProbability) * nextIf.trueSuccessorProbability; @@ -222,7 +222,7 @@ } private void pushNodesThroughIf(SimplifierTool tool) { - assert trueSuccessor().usages().isEmpty() && falseSuccessor().usages().isEmpty(); + assert trueSuccessor().hasNoUsages() && falseSuccessor().hasNoUsages(); // push similar nodes upwards through the if, thereby deduplicating them do { BeginNode trueSucc = trueSuccessor(); @@ -267,7 +267,7 @@ * @return true if a replacement was done. */ private boolean checkForUnsignedCompare(SimplifierTool tool) { - assert trueSuccessor().usages().isEmpty() && falseSuccessor().usages().isEmpty(); + assert trueSuccessor().hasNoUsages() && falseSuccessor().hasNoUsages(); if (condition() instanceof IntegerLessThanNode) { IntegerLessThanNode lessThan = (IntegerLessThanNode) condition(); Constant y = lessThan.getY().stamp().asConstant(); @@ -491,7 +491,7 @@ * @return true if a transformation was made, false otherwise */ private boolean removeOrMaterializeIf(SimplifierTool tool) { - assert trueSuccessor().usages().isEmpty() && falseSuccessor().usages().isEmpty(); + assert trueSuccessor().hasNoUsages() && falseSuccessor().hasNoUsages(); if (trueSuccessor().next() instanceof AbstractEndNode && falseSuccessor().next() instanceof AbstractEndNode) { AbstractEndNode trueEnd = (AbstractEndNode) trueSuccessor().next(); AbstractEndNode falseEnd = (AbstractEndNode) falseSuccessor().next(); diff -r a56574233253 -r ff232ff8d028 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/InvokeNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/InvokeNode.java Fri Jan 23 11:28:20 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/InvokeNode.java Fri Jan 23 11:52:36 2015 +0100 @@ -158,7 +158,7 @@ graph().replaceFixed(this, node); } GraphUtil.killWithUnusedFloatingInputs(call); - if (currentStateAfter.usages().isEmpty()) { + if (currentStateAfter.hasNoUsages()) { GraphUtil.killWithUnusedFloatingInputs(currentStateAfter); } } diff -r a56574233253 -r ff232ff8d028 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/InvokeWithExceptionNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/InvokeWithExceptionNode.java Fri Jan 23 11:28:20 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/InvokeWithExceptionNode.java Fri Jan 23 11:52:36 2015 +0100 @@ -184,7 +184,7 @@ foreign.setBci(bci()); } if (node == null) { - assert getKind() == Kind.Void && usages().isEmpty(); + assert getKind() == Kind.Void && hasNoUsages(); graph().removeSplit(this, next()); } else if (node instanceof ControlSinkNode) { this.replaceAtPredecessor(node); @@ -195,7 +195,7 @@ graph().replaceSplit(this, node, next()); } GraphUtil.killWithUnusedFloatingInputs(call); - if (state.usages().isEmpty()) { + if (state.hasNoUsages()) { GraphUtil.killWithUnusedFloatingInputs(state); } } diff -r a56574233253 -r ff232ff8d028 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/LoopBeginNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/LoopBeginNode.java Fri Jan 23 11:28:20 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/LoopBeginNode.java Fri Jan 23 11:52:36 2015 +0100 @@ -192,7 +192,7 @@ loopexit.removeProxies(); FrameState loopStateAfter = loopexit.stateAfter(); graph().replaceFixedWithFixed(loopexit, graph().add(new BeginNode())); - if (loopStateAfter != null && loopStateAfter.isAlive() && loopStateAfter.usages().isEmpty()) { + if (loopStateAfter != null && loopStateAfter.isAlive() && loopStateAfter.hasNoUsages()) { GraphUtil.killWithUnusedFloatingInputs(loopStateAfter); } } diff -r a56574233253 -r ff232ff8d028 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/LoopEndNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/LoopEndNode.java Fri Jan 23 11:28:20 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/LoopEndNode.java Fri Jan 23 11:52:36 2015 +0100 @@ -74,7 +74,7 @@ @Override public boolean verify() { assertTrue(loopBegin != null, "must have a loop begin"); - assertTrue(usages().isEmpty(), "LoopEnds can not be used"); + assertTrue(hasNoUsages(), "LoopEnds can not be used"); return super.verify(); } diff -r a56574233253 -r ff232ff8d028 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/LoopExitNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/LoopExitNode.java Fri Jan 23 11:28:20 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/LoopExitNode.java Fri Jan 23 11:52:36 2015 +0100 @@ -43,7 +43,7 @@ @Override public void simplify(SimplifierTool tool) { Node prev = this.predecessor(); - while (prev.getClass() == BeginNode.class && prev.usages().isEmpty()) { + while (prev.getClass() == BeginNode.class && prev.hasNoUsages()) { BeginNode begin = (BeginNode) prev; prev = prev.predecessor(); graph().removeFixed(begin); diff -r a56574233253 -r ff232ff8d028 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/MergeNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/MergeNode.java Fri Jan 23 11:28:20 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/MergeNode.java Fri Jan 23 11:52:36 2015 +0100 @@ -96,7 +96,7 @@ } ValueNode removedValue = phi.valueAt(predIndex); phi.removeInput(predIndex); - if (removedValue != null && removedValue.isAlive() && removedValue.usages().isEmpty() && GraphUtil.isFloatingNode().apply(removedValue)) { + if (removedValue != null && removedValue.isAlive() && removedValue.hasNoUsages() && GraphUtil.isFloatingNode().apply(removedValue)) { GraphUtil.killWithUnusedFloatingInputs(removedValue); } } @@ -223,7 +223,7 @@ end.safeDelete(); } for (PhiNode phi : phis) { - if (phi.isAlive() && phi.usages().isEmpty()) { + if (phi.isAlive() && phi.hasNoUsages()) { GraphUtil.killWithUnusedFloatingInputs(phi); } } diff -r a56574233253 -r ff232ff8d028 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/StructuredGraph.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/StructuredGraph.java Fri Jan 23 11:28:20 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/StructuredGraph.java Fri Jan 23 11:52:36 2015 +0100 @@ -276,7 +276,7 @@ if (node instanceof BeginNode) { ((BeginNode) node).prepareDelete(); } - assert node.usages().isEmpty() : node + " " + node.usages(); + assert node.hasNoUsages() : node + " " + node.usages(); GraphUtil.unlinkFixedNode(node); node.safeDelete(); } @@ -311,7 +311,7 @@ public void removeSplit(ControlSplitNode node, BeginNode survivingSuccessor) { assert node != null; - assert node.usages().isEmpty(); + assert node.hasNoUsages(); assert survivingSuccessor != null; node.clearSuccessors(); node.replaceAtPredecessor(survivingSuccessor); @@ -324,7 +324,7 @@ public void removeSplitPropagate(ControlSplitNode node, BeginNode survivingSuccessor, SimplifierTool tool) { assert node != null; - assert node.usages().isEmpty(); + assert node.hasNoUsages(); assert survivingSuccessor != null; List snapshot = node.successors().snapshot(); node.clearSuccessors(); @@ -416,7 +416,7 @@ // evacuateGuards merge.prepareDelete((FixedNode) singleEnd.predecessor()); merge.safeDelete(); - if (stateAfter != null && stateAfter.isAlive() && stateAfter.usages().isEmpty()) { + if (stateAfter != null && stateAfter.isAlive() && stateAfter.hasNoUsages()) { GraphUtil.killWithUnusedFloatingInputs(stateAfter); } if (sux == null) { diff -r a56574233253 -r ff232ff8d028 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/ReadNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/ReadNode.java Fri Jan 23 11:28:20 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/ReadNode.java Fri Jan 23 11:52:36 2015 +0100 @@ -69,7 +69,7 @@ @Override public Node canonical(CanonicalizerTool tool) { - if (usages().isEmpty()) { + if (hasNoUsages()) { if (getGuard() != null && !(getGuard() instanceof FixedNode)) { // The guard is necessary even if the read goes away. return new ValueAnchorNode((ValueNode) getGuard()); diff -r a56574233253 -r ff232ff8d028 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/ValueAnchorNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/ValueAnchorNode.java Fri Jan 23 11:28:20 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/ValueAnchorNode.java Fri Jan 23 11:52:36 2015 +0100 @@ -65,7 +65,7 @@ break; } } - if (usages().isEmpty() && next() instanceof FixedAccessNode) { + if (hasNoUsages() && next() instanceof FixedAccessNode) { FixedAccessNode currentNext = (FixedAccessNode) next(); if (currentNext.getGuard() == anchored) { GraphUtil.removeFixedWithUnusedInputs(this); @@ -83,7 +83,7 @@ removeAnchoredNode(); } - if (anchored == null && usages().isEmpty()) { + if (anchored == null && hasNoUsages()) { // anchor is not necessary any more => remove. GraphUtil.removeFixedWithUnusedInputs(this); } diff -r a56574233253 -r ff232ff8d028 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/LoadFieldNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/LoadFieldNode.java Fri Jan 23 11:28:20 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/LoadFieldNode.java Fri Jan 23 11:52:36 2015 +0100 @@ -57,7 +57,7 @@ } public ValueNode canonical(CanonicalizerTool tool, ValueNode forObject) { - if (usages().isEmpty() && !isVolatile() && (isStatic() || StampTool.isPointerNonNull(forObject.stamp()))) { + if (hasNoUsages() && !isVolatile() && (isStatic() || StampTool.isPointerNonNull(forObject.stamp()))) { return null; } MetaAccessProvider metaAccess = tool.getMetaAccess(); diff -r a56574233253 -r ff232ff8d028 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/util/GraphUtil.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/util/GraphUtil.java Fri Jan 23 11:28:20 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/util/GraphUtil.java Fri Jan 23 11:52:36 2015 +0100 @@ -139,7 +139,7 @@ node.safeDelete(); for (Node in : floatingInputs) { - if (in.isAlive() && in.usages().isEmpty()) { + if (in.isAlive() && in.hasNoUsages()) { killWithUnusedFloatingInputs(in); } } @@ -149,7 +149,7 @@ if (fixed instanceof StateSplit) { FrameState stateAfter = ((StateSplit) fixed).stateAfter(); ((StateSplit) fixed).setStateAfter(null); - if (stateAfter.usages().isEmpty()) { + if (stateAfter.hasNoUsages()) { killWithUnusedFloatingInputs(stateAfter); } } @@ -379,7 +379,7 @@ } public static boolean tryKillUnused(Node node) { - if (node.isAlive() && isFloatingNode().apply(node) && node.usages().isEmpty()) { + if (node.isAlive() && isFloatingNode().apply(node) && node.hasNoUsages()) { killWithUnusedFloatingInputs(node); return true; } diff -r a56574233253 -r ff232ff8d028 graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/ConditionalEliminationPhase.java --- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/ConditionalEliminationPhase.java Fri Jan 23 11:28:20 2015 +0100 +++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/ConditionalEliminationPhase.java Fri Jan 23 11:52:36 2015 +0100 @@ -340,10 +340,10 @@ @Override public void finished() { - if (trueConstant.usages().isEmpty()) { + if (trueConstant.hasNoUsages()) { graph.removeFloating(trueConstant); } - if (falseConstant.usages().isEmpty()) { + if (falseConstant.hasNoUsages()) { graph.removeFloating(falseConstant); } super.finished(); @@ -770,7 +770,7 @@ } ifNode.setCondition(replacement); - if (compare.usages().isEmpty()) { + if (compare.hasNoUsages()) { GraphUtil.killWithUnusedFloatingInputs(compare); } } @@ -786,7 +786,7 @@ if (replacement != null) { phi.setValueAt(index, replacement); - if (materialize.usages().isEmpty()) { + if (materialize.hasNoUsages()) { GraphUtil.killWithUnusedFloatingInputs(materialize); } } diff -r a56574233253 -r ff232ff8d028 graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/FrameStateAssignmentPhase.java --- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/FrameStateAssignmentPhase.java Fri Jan 23 11:28:20 2015 +0100 +++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/FrameStateAssignmentPhase.java Fri Jan 23 11:52:36 2015 +0100 @@ -110,7 +110,7 @@ if (graph.getGuardsStage().ordinal() < GuardsStage.AFTER_FSA.ordinal()) { ReentrantNodeIterator.apply(new FrameStateAssignmentClosure(), graph.start(), null); graph.setGuardsStage(GuardsStage.AFTER_FSA); - graph.getNodes(FrameState.class).filter(state -> state.usages().isEmpty()).forEach(GraphUtil::killWithUnusedFloatingInputs); + graph.getNodes(FrameState.class).filter(state -> state.hasNoUsages()).forEach(GraphUtil::killWithUnusedFloatingInputs); } } diff -r a56574233253 -r ff232ff8d028 graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/GuardLoweringPhase.java --- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/GuardLoweringPhase.java Fri Jan 23 11:28:20 2015 +0100 +++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/GuardLoweringPhase.java Fri Jan 23 11:52:36 2015 +0100 @@ -111,7 +111,7 @@ fixedAccess.setNullCheck(true); LogicNode condition = guard.condition(); guard.replaceAndDelete(fixedAccess); - if (condition.usages().isEmpty()) { + if (condition.hasNoUsages()) { GraphUtil.killWithUnusedFloatingInputs(condition); } nullGuarded.remove(fixedAccess.object()); diff -r a56574233253 -r ff232ff8d028 graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/RemoveValueProxyPhase.java --- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/RemoveValueProxyPhase.java Fri Jan 23 11:28:20 2015 +0100 +++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/RemoveValueProxyPhase.java Fri Jan 23 11:52:36 2015 +0100 @@ -39,7 +39,7 @@ FrameState stateAfter = exit.stateAfter(); if (stateAfter != null) { exit.setStateAfter(null); - if (stateAfter.usages().isEmpty()) { + if (stateAfter.hasNoUsages()) { GraphUtil.killWithUnusedFloatingInputs(stateAfter); } } diff -r a56574233253 -r ff232ff8d028 graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/TailDuplicationPhase.java --- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/TailDuplicationPhase.java Fri Jan 23 11:28:20 2015 +0100 +++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/TailDuplicationPhase.java Fri Jan 23 11:52:36 2015 +0100 @@ -301,7 +301,7 @@ BeginNode prevBegin = BeginNode.prevBegin(forwardEnd); anchorDuplicate.replaceAtUsages(InputType.Guard, prevBegin); anchorDuplicate.replaceAtUsages(InputType.Anchor, prevBegin); - assert anchorDuplicate.usages().isEmpty(); + assert anchorDuplicate.hasNoUsages(); FixedNode next = anchorDuplicate.next(); anchorDuplicate.setNext(null); diff -r a56574233253 -r ff232ff8d028 graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/UseTrappingNullChecksPhase.java --- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/UseTrappingNullChecksPhase.java Fri Jan 23 11:28:20 2015 +0100 +++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/UseTrappingNullChecksPhase.java Fri Jan 23 11:52:36 2015 +0100 @@ -182,7 +182,7 @@ } GraphUtil.killCFG(trappingContinuation); - if (isNullNode.usages().isEmpty()) { + if (isNullNode.hasNoUsages()) { GraphUtil.killWithUnusedFloatingInputs(isNullNode); } } diff -r a56574233253 -r ff232ff8d028 graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/ValueAnchorCleanupPhase.java --- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/ValueAnchorCleanupPhase.java Fri Jan 23 11:28:20 2015 +0100 +++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/ValueAnchorCleanupPhase.java Fri Jan 23 11:52:36 2015 +0100 @@ -81,7 +81,7 @@ state.anchoredValues.add(anchored); } } - if (anchor.getAnchoredNode() == null && anchor.usages().isEmpty()) { + if (anchor.getAnchoredNode() == null && anchor.hasNoUsages()) { node.graph().removeFixed(anchor); } } diff -r a56574233253 -r ff232ff8d028 graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/cfs/FlowUtil.java --- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/cfs/FlowUtil.java Fri Jan 23 11:28:20 2015 +0100 +++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/cfs/FlowUtil.java Fri Jan 23 11:52:36 2015 +0100 @@ -37,7 +37,7 @@ } public static boolean lacksUsages(Node n) { - return n.usages().isEmpty(); + return n.hasNoUsages(); } public static ResolvedJavaType widen(ResolvedJavaType a, ResolvedJavaType b) { diff -r a56574233253 -r ff232ff8d028 graal/com.oracle.graal.printer/src/com/oracle/graal/printer/CFGPrinter.java --- a/graal/com.oracle.graal.printer/src/com/oracle/graal/printer/CFGPrinter.java Fri Jan 23 11:28:20 2015 +0100 +++ b/graal/com.oracle.graal.printer/src/com/oracle/graal/printer/CFGPrinter.java Fri Jan 23 11:52:36 2015 +0100 @@ -343,7 +343,7 @@ out.println("=== Succesors ==="); printNamedNodes(node, node.successors().iterator(), "", "\n", null); out.println("=== Usages ==="); - if (!node.usages().isEmpty()) { + if (!node.hasNoUsages()) { for (Node usage : node.usages()) { out.print(nodeToString(usage)).print(" "); } diff -r a56574233253 -r ff232ff8d028 graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/CollapseFrameForSingleSideEffectPhase.java --- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/CollapseFrameForSingleSideEffectPhase.java Fri Jan 23 11:28:20 2015 +0100 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/CollapseFrameForSingleSideEffectPhase.java Fri Jan 23 11:52:36 2015 +0100 @@ -137,7 +137,7 @@ setStateAfter(node.graph(), stateSplit, INVALID_FRAMESTATE_BCI, false); } else { stateSplit.setStateAfter(null); - if (frameState.usages().isEmpty()) { + if (frameState.hasNoUsages()) { GraphUtil.killWithUnusedFloatingInputs(frameState); } } @@ -229,7 +229,7 @@ FrameState currentStateAfter = node.stateAfter(); if (currentStateAfter != null || !replaceOnly) { node.setStateAfter(graph.add(new FrameState(bci))); - if (currentStateAfter != null && currentStateAfter.usages().isEmpty()) { + if (currentStateAfter != null && currentStateAfter.hasNoUsages()) { GraphUtil.killWithUnusedFloatingInputs(currentStateAfter); } } diff -r a56574233253 -r ff232ff8d028 graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/InstanceOfSnippetsTemplates.java --- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/InstanceOfSnippetsTemplates.java Fri Jan 23 11:28:20 2015 +0100 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/InstanceOfSnippetsTemplates.java Fri Jan 23 11:52:36 2015 +0100 @@ -83,7 +83,7 @@ } } - assert instanceOf.usages().isEmpty(); + assert instanceOf.hasNoUsages(); if (!instanceOf.isDeleted()) { GraphUtil.killWithUnusedFloatingInputs(instanceOf); } @@ -234,7 +234,7 @@ public void replaceUsingInstantiation() { ValueNode newValue = instantiation.asMaterialization(usage.graph(), trueValue, falseValue); usage.replaceAtUsages(newValue); - assert usage.usages().isEmpty(); + assert usage.hasNoUsages(); GraphUtil.killWithUnusedFloatingInputs(usage); } @@ -245,7 +245,7 @@ newNode.inferStamp(); instantiation.initialize(newNode, trueValue, falseValue); usage.replaceAtUsages(newNode); - assert usage.usages().isEmpty(); + assert usage.hasNoUsages(); GraphUtil.killWithUnusedFloatingInputs(usage); } } diff -r a56574233253 -r ff232ff8d028 graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/NodeIntrinsificationPhase.java --- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/NodeIntrinsificationPhase.java Fri Jan 23 11:28:20 2015 +0100 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/NodeIntrinsificationPhase.java Fri Jan 23 11:52:36 2015 +0100 @@ -406,7 +406,7 @@ usage.replaceFirstInput(input, intrinsifiedNode); Debug.log("%s: Checkcast used in a return with forNodeIntrinsic stamp", Debug.contextSnapshot(JavaMethod.class)); } else if (usage instanceof IsNullNode) { - if (!usage.usages().isEmpty()) { + if (!usage.hasNoUsages()) { assert usage.usages().count() == 1 && usage.usages().first().predecessor() == input : usage + " " + input; graph.replaceFloating((FloatingNode) usage, LogicConstantNode.contradiction(graph)); Debug.log("%s: Replaced IsNull with false", Debug.contextSnapshot(JavaMethod.class)); diff -r a56574233253 -r ff232ff8d028 graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/SnippetTemplate.java --- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/SnippetTemplate.java Fri Jan 23 11:28:20 2015 +0100 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/SnippetTemplate.java Fri Jan 23 11:52:36 2015 +0100 @@ -726,7 +726,7 @@ Debug.dump(snippet, "SnippetTemplate after fixing memory anchoring"); StartNode entryPointNode = snippet.start(); - if (memoryAnchor.usages().isEmpty()) { + if (memoryAnchor.hasNoUsages()) { memoryAnchor.safeDelete(); } else { snippetCopy.addAfterFixed(snippetCopy.start(), memoryAnchor); @@ -746,7 +746,7 @@ this.returnNode.setMemoryMap(memoryMap); for (MemoryMapNode mm : memMaps) { if (mm != memoryMap && mm.isAlive()) { - assert mm.usages().isEmpty(); + assert mm.hasNoUsages(); GraphUtil.killWithUnusedFloatingInputs(mm); } } @@ -986,7 +986,7 @@ } } if (newNode == null) { - assert oldNode.usages().isEmpty(); + assert oldNode.hasNoUsages(); } else { oldNode.replaceAtUsages(newNode); } @@ -1176,7 +1176,7 @@ if (returnValue == null && replacee.usages().isNotEmpty() && replacee instanceof MemoryCheckpoint) { replacer.replace(replacee, null, mmap); } else { - assert returnValue != null || replacee.usages().isEmpty(); + assert returnValue != null || replacee.hasNoUsages(); replacer.replace(replacee, returnValue, mmap); } if (returnDuplicate.isAlive()) { @@ -1273,7 +1273,7 @@ // Replace all usages of the replacee with the value returned by the snippet ReturnNode returnDuplicate = (ReturnNode) duplicates.get(returnNode); ValueNode returnValue = returnDuplicate.result(); - assert returnValue != null || replacee.usages().isEmpty(); + assert returnValue != null || replacee.hasNoUsages(); replacer.replace(replacee, returnValue, new DuplicateMapper(duplicates, replaceeGraph.start())); if (returnDuplicate.isAlive()) { diff -r a56574233253 -r ff232ff8d028 graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/ArrayEqualsNode.java --- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/ArrayEqualsNode.java Fri Jan 23 11:28:20 2015 +0100 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/ArrayEqualsNode.java Fri Jan 23 11:52:36 2015 +0100 @@ -63,7 +63,7 @@ @Override public Node canonical(CanonicalizerTool tool) { - if (usages().isEmpty()) { + if (hasNoUsages()) { return null; } if (GraphUtil.unproxify(array1) == GraphUtil.unproxify(array2)) { diff -r a56574233253 -r ff232ff8d028 graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/MemoryAnchorNode.java --- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/MemoryAnchorNode.java Fri Jan 23 11:28:20 2015 +0100 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/MemoryAnchorNode.java Fri Jan 23 11:52:36 2015 +0100 @@ -43,6 +43,6 @@ @Override public Node canonical(CanonicalizerTool tool) { - return usages().isEmpty() ? null : this; + return hasNoUsages() ? null : this; } } diff -r a56574233253 -r ff232ff8d028 graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/PureFunctionMacroNode.java --- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/PureFunctionMacroNode.java Fri Jan 23 11:28:20 2015 +0100 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/PureFunctionMacroNode.java Fri Jan 23 11:52:36 2015 +0100 @@ -47,7 +47,7 @@ @Override public Node canonical(CanonicalizerTool tool) { - if (usages().isEmpty()) { + if (hasNoUsages()) { return null; } else { ValueNode param = arguments.get(0); diff -r a56574233253 -r ff232ff8d028 graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/frame/NewFrameNode.java --- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/frame/NewFrameNode.java Fri Jan 23 11:28:20 2015 +0100 +++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/frame/NewFrameNode.java Fri Jan 23 11:52:36 2015 +0100 @@ -226,7 +226,7 @@ @Override public Node canonical(CanonicalizerTool tool) { - if (usages().isEmpty()) { + if (hasNoUsages()) { return null; } else { return this;