public final class ReadNode extends FloatableAccessNode implements LIRLowerable, Canonicalizable, Virtualizable, GuardingNode
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>
HeapAccess.BarrierType
DeoptimizingNode.DeoptAfter, DeoptimizingNode.DeoptBefore, DeoptimizingNode.DeoptDuring
Modifier and Type | Field and Description |
---|---|
static NodeClass<ReadNode> |
TYPE |
forceFixed
address, barrierType, guard, location, nullCheck
stateBefore
next
NODE_LIST, NOT_ITERABLE, USE_UNSAFE_TO_CLONE, WithAllEdges, WithNoEdges, WithOnlyInputEdges, WithOnlySucessorEdges
Constructor and Description |
---|
ReadNode(AddressNode address,
LocationIdentity location,
Stamp stamp,
GuardingNode guard,
HeapAccess.BarrierType barrierType) |
ReadNode(AddressNode address,
LocationIdentity location,
Stamp stamp,
GuardingNode guard,
HeapAccess.BarrierType barrierType,
boolean nullCheck,
FrameState stateBefore) |
ReadNode(AddressNode address,
LocationIdentity location,
Stamp stamp,
HeapAccess.BarrierType barrierType) |
ReadNode(AddressNode address,
LocationIdentity location,
ValueNode guard,
HeapAccess.BarrierType barrierType) |
Modifier and Type | Method and Description |
---|---|
FloatingAccessNode |
asFloatingNode(MemoryNode lastLocationAccess) |
boolean |
canNullCheck() |
Node |
canonical(CanonicalizerTool tool)
Implementations of this method can provide local optimizations like constant folding and
strength reduction.
|
static ValueNode |
canonicalizeRead(ValueNode read,
AddressNode address,
LocationIdentity locationIdentity,
CanonicalizerTool tool) |
void |
generate(NodeLIRBuilderTool gen) |
boolean |
isAllowedUsageType(InputType type) |
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.
|
canFloat, setForceFixed
canDeoptimize, getAddress, getBarrierType, getGuard, getLocationIdentity, getNullCheck, setAddress, setGuard, setNullCheck
setStateBefore, stateBefore
asNode, next, setNext
asConstant, asJavaConstant, getKind, graph, inferStamp, 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, toString, updatePredecessor, updateUsages, updateUsagesInterface, usages, valueEquals, verifyEdges, verifyInputs
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
asNode
asNode
states
public ReadNode(AddressNode address, LocationIdentity location, Stamp stamp, HeapAccess.BarrierType barrierType)
public ReadNode(AddressNode address, LocationIdentity location, Stamp stamp, GuardingNode guard, HeapAccess.BarrierType barrierType)
public ReadNode(AddressNode address, LocationIdentity location, Stamp stamp, GuardingNode guard, HeapAccess.BarrierType barrierType, boolean nullCheck, FrameState stateBefore)
public ReadNode(AddressNode address, LocationIdentity location, ValueNode guard, HeapAccess.BarrierType barrierType)
public void generate(NodeLIRBuilderTool gen)
generate
in interface LIRLowerable
public Node canonical(CanonicalizerTool tool)
Canonicalizable
null
will delete the current node and replace it with null
at
all usages. Note that it is not necessary to delete floating nodes that have no more usages
this way - they will be deleted automatically.canonical
in interface Canonicalizable
tool
- provides access to runtime interfaces like MetaAccessProvider
public FloatingAccessNode asFloatingNode(MemoryNode lastLocationAccess)
asFloatingNode
in class FloatableAccessNode
public boolean isAllowedUsageType(InputType type)
isAllowedUsageType
in class ValueNode
public static ValueNode canonicalizeRead(ValueNode read, AddressNode address, LocationIdentity locationIdentity, CanonicalizerTool tool)
public void virtualize(VirtualizerTool tool)
Virtualizable
virtualize
in interface Virtualizable
tool
- the tool used to describe the effects of this nodepublic boolean canNullCheck()
canNullCheck
in interface Access