public class ValuePhiNode extends PhiNode implements ArrayLengthProvider
PhiNode
s merge data flow values at control flow merges.PhiNode.MultipleValuesNode
Node.ConstantNodeParameter, Node.InjectedNodeParameter, Node.Input, Node.NodeIntrinsic, Node.OptionalInput, Node.Successor, Node.ValueNumberable
Modifier and Type | Field and Description |
---|---|
static NodeClass<ValuePhiNode> |
TYPE |
protected NodeInputList<ValueNode> |
values |
merge, MULTIPLE_VALUES
NODE_LIST, NOT_ITERABLE, USE_UNSAFE_TO_CLONE, WithAllEdges, WithNoEdges, WithOnlyInputEdges, WithOnlySucessorEdges
Modifier | Constructor and Description |
---|---|
protected |
ValuePhiNode(NodeClass<? extends ValuePhiNode> c,
Stamp stamp,
AbstractMergeNode merge) |
|
ValuePhiNode(Stamp stamp,
AbstractMergeNode merge) |
|
ValuePhiNode(Stamp stamp,
AbstractMergeNode merge,
ValueNode[] values) |
Modifier and Type | Method and Description |
---|---|
boolean |
inferStamp()
This method can be overridden by subclasses of
ValueNode if they need to recompute
their stamp if their inputs change. |
ValueNode |
length() |
NodeInputList<ValueNode> |
values() |
addInput, clearValues, firstValue, initializeValueAt, isLoopPhi, merge, removeInput, setMerge, setValueAt, setValueAt, simplify, singleBackValue, singleValue, toString, valueAt, valueAt, valueCount, verify
asNode
asConstant, asJavaConstant, getKind, graph, isAllowedUsageType, isConstant, isConstantPredicate, isNullConstant, setStamp, stamp, updateStamp
acceptInputs, acceptSuccessors, afterClone, assertFalse, assertTrue, cfgPredecessors, cfgSuccessors, 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, successors, toString, updatePredecessor, updateUsages, updateUsagesInterface, usages, valueEquals, verifyEdges, verifyInputs
public static final NodeClass<ValuePhiNode> TYPE
protected NodeInputList<ValueNode> values
public ValuePhiNode(Stamp stamp, AbstractMergeNode merge)
protected ValuePhiNode(NodeClass<? extends ValuePhiNode> c, Stamp stamp, AbstractMergeNode merge)
public ValuePhiNode(Stamp stamp, AbstractMergeNode merge, ValueNode[] values)
public NodeInputList<ValueNode> values()
public boolean inferStamp()
ValueNode
ValueNode
if they need to recompute
their stamp if their inputs change. A typical implementation will compute the stamp and pass
it to ValueNode.updateStamp(Stamp)
, whose return value can be used as the result of this
method.inferStamp
in class ValueNode
public ValueNode length()
length
in interface ArrayLengthProvider