public final class LoadFieldNode extends AccessFieldNode implements Canonicalizable.Unary<ValueNode>, Virtualizable, UncheckedInterfaceProvider, SingleMemoryKill
LoadFieldNode represents a read of a static or instance field.Node.ConstantNodeParameter, Node.EdgeVisitor, Node.IndirectCanonicalization, Node.InjectedNodeParameter, Node.Input, Node.NodeInsertionStackTrace, Node.NodeIntrinsic, Node.NodeIntrinsicFactory, Node.OptionalInput, Node.Successor, Node.ValueNumberableCanonicalizable.Binary<T extends Node>, Canonicalizable.BinaryCommutative<T extends Node>, Canonicalizable.Ternary<T extends Node>, Canonicalizable.Unary<T extends Node>MemoryKill.NoLocation| Modifier and Type | Field and Description |
|---|---|
static NodeClass<LoadFieldNode> |
TYPE |
field, location, memoryOrdernextEMPTY_ARRAY, stampNODE_LIST, NOT_ITERABLE, TRACK_CREATION_POSITION, WithAllEdges, WithNoEdges, WithOnlyInputEdges, WithOnlySucessorEdgesMULTI_KILL_NO_LOCATION, NO_LOCATION| Modifier | Constructor and Description |
|---|---|
protected |
LoadFieldNode(StampPair stamp,
ValueNode object,
ResolvedJavaField field) |
protected |
LoadFieldNode(StampPair stamp,
ValueNode object,
ResolvedJavaField field,
MemoryOrderMode memoryOrder) |
| Modifier and Type | Method and Description |
|---|---|
ConstantNode |
asConstant(CanonicalizerTool tool,
JavaConstant constant) |
ConstantNode |
asConstant(CanonicalizerTool tool,
ValueNode forObject)
Gets a constant value for this load if possible.
|
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. |
static LoadFieldNode |
create(Assumptions assumptions,
ValueNode object,
ResolvedJavaField field) |
static LoadFieldNode |
create(Assumptions assumptions,
ValueNode object,
ResolvedJavaField field,
MemoryOrderMode memoryOrder) |
static ValueNode |
create(ConstantFieldProvider constantFields,
ConstantReflectionProvider constantReflection,
MetaAccessProvider metaAccess,
OptionValues options,
Assumptions assumptions,
ValueNode object,
ResolvedJavaField field,
boolean canonicalizeReads,
boolean allUsagesAvailable) |
static ValueNode |
createOverrideStamp(ConstantFieldProvider constantFields,
ConstantReflectionProvider constantReflection,
MetaAccessProvider metaAccess,
OptionValues options,
StampPair stamp,
ValueNode object,
ResolvedJavaField field,
boolean canonicalizeReads,
boolean allUsagesAvailable) |
static LoadFieldNode |
createOverrideStamp(StampPair stamp,
ValueNode object,
ResolvedJavaField field) |
NodeCycles |
estimatedNodeCycles() |
org.graalvm.word.LocationIdentity |
getKilledLocationIdentity()
This method is used to determine which memory location is killed by this node.
|
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). |
void |
setObject(ValueNode newObject) |
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.
|
dynamicNodeSizeEstimate, field, getLocationIdentity, getMemoryOrder, isStatic, object, toString, verifyasFixedWithNextNode, next, setNextasFixedNodeasConstant, asJavaConstant, asNode, asSerializableConstant, checkReplaceAtUsagesInvariants, getStackKind, graph, hasUsagesOtherThan, inferStamp, isAllowedUsageType, isConstant, isConstantPredicate, isDefaultConstant, isIllegalConstant, isJavaConstant, isNullConstant, isSerializableConstant, recursivelyDataFlowEqualsUpTo, setStamp, stamp, updateStamp, updateUsagesInterfaceafterClone, applyInputs, applySuccessors, assertFalse, assertTrue, cfgPredecessors, cfgSuccessors, clearInputs, clearNodeSourcePosition, clearSuccessors, copyWithInputs, copyWithInputs, dataFlowEquals, estimatedNodeSize, fail, formatTo, getCreationPosition, getDebug, getDebugProperties, getDebugProperties, getInsertionPosition, getNodeClass, getNodeSourcePosition, getOptions, getUsageCount, hasExactlyOneUsage, hashCode, hasMoreThanOneUsage, hasNoUsages, hasOnlyUsagesOfType, hasUsages, hasUsagesOfType, inputPositions, inputs, isAlive, isDeleted, isUnregistered, markDeleted, maybeNotifyZeroUsages, modCount, predecessor, pushInputs, removeUsage, replaceAllInputs, replaceAndDelete, replaceAtAllUsages, replaceAtMatchingUsages, replaceAtPredecessor, replaceAtUsages, replaceAtUsages, replaceAtUsages, replaceAtUsages, replaceAtUsages, replaceAtUsagesAndDelete, replaceAtUsagesAndDelete, replaceFirstInput, replaceFirstSuccessor, safeDelete, setCreationPosition, setInsertionPosition, setNodeSourcePosition, singleUsage, successorPositions, successors, toString, updateNodeSourcePosition, updatePredecessor, updateUsages, usages, valueEquals, verifyEdges, verifyInputs, verifySourcePosition, withNodeSourcePositionclone, equals, getClass, notify, notifyAll, wait, wait, waitcanonicalasMultiMemoryKill, asSingleMemoryKill, isMemoryKill, isMultiMemoryKill, isSingleMemoryKillasNodeordersMemoryAccessesgetLastLocationAccess, setLastLocationAccessasFixedNodepublic static final NodeClass<LoadFieldNode> TYPE
protected LoadFieldNode(StampPair stamp, ValueNode object, ResolvedJavaField field, MemoryOrderMode memoryOrder)
public static LoadFieldNode create(Assumptions assumptions, ValueNode object, ResolvedJavaField field)
public static LoadFieldNode create(Assumptions assumptions, ValueNode object, ResolvedJavaField field, MemoryOrderMode memoryOrder)
public static ValueNode create(ConstantFieldProvider constantFields, ConstantReflectionProvider constantReflection, MetaAccessProvider metaAccess, OptionValues options, Assumptions assumptions, ValueNode object, ResolvedJavaField field, boolean canonicalizeReads, boolean allUsagesAvailable)
public static LoadFieldNode createOverrideStamp(StampPair stamp, ValueNode object, ResolvedJavaField field)
public static ValueNode createOverrideStamp(ConstantFieldProvider constantFields, ConstantReflectionProvider constantReflection, MetaAccessProvider metaAccess, OptionValues options, StampPair stamp, ValueNode object, ResolvedJavaField field, boolean canonicalizeReads, boolean allUsagesAvailable)
public org.graalvm.word.LocationIdentity getKilledLocationIdentity()
SingleMemoryKillLocationIdentity.any() will kill all memory locations.getKilledLocationIdentity in interface SingleMemoryKillpublic ValueNode getValue()
Canonicalizable.UnaryCanonicalizable.Unary.canonical(CanonicalizerTool, Node) with the value returned from this method
should behave exactly like Canonicalizable.canonical(CanonicalizerTool).getValue in interface Canonicalizable.Unary<ValueNode>public ValueNode canonical(CanonicalizerTool tool, ValueNode forObject)
Canonicalizable.UnaryCanonicalizable.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(CanonicalizerTool tool, ValueNode forObject)
public ConstantNode asConstant(CanonicalizerTool tool, JavaConstant constant)
public void virtualize(VirtualizerTool tool)
Virtualizablevirtualize in interface Virtualizabletool - the tool used to describe the effects of this nodepublic Stamp uncheckedStamp()
UncheckedInterfaceProvideruncheckedStamp in interface UncheckedInterfaceProviderpublic void setObject(ValueNode newObject)
public NodeCycles estimatedNodeCycles()
estimatedNodeCycles in class Node