public final class LoopEndNode extends AbstractEndNode
Node.ConstantNodeParameter, Node.InjectedNodeParameter, Node.Input, Node.NodeIntrinsic, Node.OptionalInput, Node.Successor, Node.ValueNumberable
Modifier and Type | Field and Description |
---|---|
protected boolean |
canSafepoint |
protected int |
endIndex |
(package private) LoopBeginNode |
loopBegin |
static NodeClass<LoopEndNode> |
TYPE |
NODE_LIST, NOT_ITERABLE, USE_UNSAFE_TO_CLONE, WithAllEdges, WithNoEdges, WithOnlyInputEdges, WithOnlySucessorEdges
Constructor and Description |
---|
LoopEndNode(LoopBeginNode begin) |
Modifier and Type | Method and Description |
---|---|
boolean |
canSafepoint() |
Iterable<? extends Node> |
cfgSuccessors()
Returns an iterator that will provide all control-flow successors of this node.
|
void |
disableSafepoint() |
(package private) int |
endIndex()
Returns the index of this loop end amongst its
LoopBeginNode 's loop ends.Since a LoopBeginNode also has forward ends, this is not the index into PhiNode values at the loop begin. |
void |
generate(NodeLIRBuilderTool gen) |
LoopBeginNode |
loopBegin() |
AbstractMergeNode |
merge() |
(package private) void |
setEndIndex(int idx) |
void |
setLoopBegin(LoopBeginNode x) |
boolean |
verify() |
asConstant, asJavaConstant, getKind, graph, inferStamp, isAllowedUsageType, isConstant, isConstantPredicate, isNullConstant, setStamp, stamp, updateStamp
acceptInputs, acceptSuccessors, afterClone, assertFalse, assertTrue, cfgPredecessors, clearInputs, clearSuccessors, copyWithInputs, copyWithInputs, equals, fail, formatTo, getDebugProperties, getDebugProperties, getId, getNodeClass, getUsageAt, getUsageCount, hashCode, hasNoUsages, hasUsages, inputs, isAlive, isDeleted, markDeleted, modCount, newIdentityMap, newIdentityMap, newIdentityMap, newMap, newMap, newMap, newSet, newSet, predecessor, pushInputs, removeUsage, replaceAndDelete, replaceAtMatchingUsages, replaceAtPredecessor, replaceAtUsages, replaceAtUsages, replaceAtUsages, replaceFirstInput, replaceFirstSuccessor, safeDelete, simplify, successors, toString, toString, updatePredecessor, updateUsages, updateUsagesInterface, usages, valueEquals, verifyEdges, verifyInputs
public static final NodeClass<LoopEndNode> TYPE
LoopBeginNode loopBegin
protected boolean canSafepoint
protected int endIndex
public LoopEndNode(LoopBeginNode begin)
public AbstractMergeNode merge()
merge
in class AbstractEndNode
public LoopBeginNode loopBegin()
public void setLoopBegin(LoopBeginNode x)
public void disableSafepoint()
public boolean canSafepoint()
public void generate(NodeLIRBuilderTool gen)
generate
in interface LIRLowerable
generate
in class AbstractEndNode
public boolean verify()
verify
in class AbstractEndNode
int endIndex()
LoopBeginNode
's loop ends.PhiNode
values at the loop begin. Use
LoopBeginNode.phiPredecessorIndex(AbstractEndNode)
for this purpose.void setEndIndex(int idx)
public Iterable<? extends Node> cfgSuccessors()
Node
cfgSuccessors
in class AbstractEndNode