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, updateStampacceptInputs, 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, verifyInputspublic static final NodeClass<LoopEndNode> TYPE
LoopBeginNode loopBegin
protected boolean canSafepoint
protected int endIndex
public LoopEndNode(LoopBeginNode begin)
public AbstractMergeNode merge()
merge in class AbstractEndNodepublic LoopBeginNode loopBegin()
public void setLoopBegin(LoopBeginNode x)
public void disableSafepoint()
public boolean canSafepoint()
public void generate(NodeLIRBuilderTool gen)
generate in interface LIRLowerablegenerate in class AbstractEndNodepublic boolean verify()
verify in class AbstractEndNodeint 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()
NodecfgSuccessors in class AbstractEndNode