public final class LoadFieldNode extends AccessFieldNode implements Canonicalizable.Unary<ValueNode>, Virtualizable, UncheckedInterfaceProvider
LoadFieldNode
represents a read of a static or instance field.Node.ConstantNodeParameter, Node.InjectedNodeParameter, Node.Input, Node.NodeIntrinsic, Node.OptionalInput, Node.Successor, Node.ValueNumberable
Canonicalizable.Binary<T extends Node>, Canonicalizable.BinaryCommutative<T extends Node>, Canonicalizable.Unary<T extends Node>
Modifier and Type | Field and Description |
---|---|
static NodeClass<LoadFieldNode> |
TYPE |
field, object
next
NODE_LIST, NOT_ITERABLE, USE_UNSAFE_TO_CLONE, WithAllEdges, WithNoEdges, WithOnlyInputEdges, WithOnlySucessorEdges
Constructor and Description |
---|
LoadFieldNode(ValueNode object,
ResolvedJavaField field) |
Modifier and Type | Method and Description |
---|---|
ConstantNode |
asConstant(MetaAccessProvider metaAccess,
ConstantReflectionProvider constantReflection,
ValueNode forObject)
Gets a constant value for this load if possible.
|
private PhiNode |
asPhi(MetaAccessProvider metaAccess,
ConstantReflectionProvider constantReflection,
ValueNode forObject) |
ValueNode |
canonical(CanonicalizerTool tool,
ValueNode forObject)
Similar to
Canonicalizable.canonical(CanonicalizerTool) , except that
implementations should act as if the current input of the node was the given one, i.e.,
they should never look at the inputs via the this pointer. |
private static Stamp |
createStamp(ResolvedJavaField field) |
ValueNode |
getValue()
Gets the current value of the input, so that calling
Canonicalizable.Unary.canonical(CanonicalizerTool, Node) with the value returned from this method
should behave exactly like Canonicalizable.canonical(CanonicalizerTool) . |
Stamp |
uncheckedStamp()
Returns a stamp containing information about interface types that has not been verified or
null if no such stamp is available.
|
void |
virtualize(VirtualizerTool tool)
A node class can implement this method to convey information about what its effect would be
if some of its inputs were virtualized.
|
field, isStatic, isVolatile, lower, object, toString, verify
asNode, next, setNext
asConstant, asJavaConstant, getKind, graph, inferStamp, 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, simplify, successors, toString, updatePredecessor, updateUsages, updateUsagesInterface, usages, valueEquals, verifyEdges, verifyInputs
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
canonical
uncheckedOrNull
public static final NodeClass<LoadFieldNode> TYPE
public LoadFieldNode(ValueNode object, ResolvedJavaField field)
public ValueNode getValue()
Canonicalizable.Unary
Canonicalizable.Unary.canonical(CanonicalizerTool, Node)
with the value returned from this method
should behave exactly like Canonicalizable.canonical(CanonicalizerTool)
.getValue
in interface Canonicalizable.Unary<ValueNode>
private static Stamp createStamp(ResolvedJavaField field)
public ValueNode canonical(CanonicalizerTool tool, ValueNode forObject)
Canonicalizable.Unary
Canonicalizable.canonical(CanonicalizerTool)
, except that
implementations should act as if the current input of the node was the given one, i.e.,
they should never look at the inputs via the this pointer.canonical
in interface Canonicalizable.Unary<ValueNode>
public ConstantNode asConstant(MetaAccessProvider metaAccess, ConstantReflectionProvider constantReflection, ValueNode forObject)
private PhiNode asPhi(MetaAccessProvider metaAccess, ConstantReflectionProvider constantReflection, ValueNode forObject)
public void virtualize(VirtualizerTool tool)
Virtualizable
virtualize
in interface Virtualizable
tool
- the tool used to describe the effects of this nodepublic Stamp uncheckedStamp()
UncheckedInterfaceProvider
uncheckedStamp
in interface UncheckedInterfaceProvider