public final class FloatingReadNode extends FloatingAccessNode implements LIRLowerable, Canonicalizable
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
Modifier and Type | Field and Description |
---|---|
(package private) MemoryNode |
lastLocationAccess |
static NodeClass<FloatingReadNode> |
TYPE |
address, barrierType, location
guard
NODE_LIST, NOT_ITERABLE, USE_UNSAFE_TO_CLONE, WithAllEdges, WithNoEdges, WithOnlyInputEdges, WithOnlySucessorEdges
Constructor and Description |
---|
FloatingReadNode(AddressNode address,
LocationIdentity location,
MemoryNode lastLocationAccess,
Stamp stamp) |
FloatingReadNode(AddressNode address,
LocationIdentity location,
MemoryNode lastLocationAccess,
Stamp stamp,
GuardingNode guard) |
FloatingReadNode(AddressNode address,
LocationIdentity location,
MemoryNode lastLocationAccess,
Stamp stamp,
GuardingNode guard,
HeapAccess.BarrierType barrierType) |
Modifier and Type | Method and Description |
---|---|
FixedAccessNode |
asFixedNode() |
Node |
canonical(CanonicalizerTool tool)
Implementations of this method can provide local optimizations like constant folding and
strength reduction.
|
void |
generate(NodeLIRBuilderTool gen) |
MemoryNode |
getLastLocationAccess() |
void |
setLastLocationAccess(MemoryNode newlla) |
boolean |
verify() |
canNullCheck, getAddress, getBarrierType, getLocationIdentity
getGuard, setGuard
asNode
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, toString, updatePredecessor, updateUsages, updateUsagesInterface, usages, valueEquals, verifyEdges, verifyInputs
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
asNode, getGuard, setGuard
public static final NodeClass<FloatingReadNode> TYPE
MemoryNode lastLocationAccess
public FloatingReadNode(AddressNode address, LocationIdentity location, MemoryNode lastLocationAccess, Stamp stamp)
public FloatingReadNode(AddressNode address, LocationIdentity location, MemoryNode lastLocationAccess, Stamp stamp, GuardingNode guard)
public FloatingReadNode(AddressNode address, LocationIdentity location, MemoryNode lastLocationAccess, Stamp stamp, GuardingNode guard, HeapAccess.BarrierType barrierType)
public MemoryNode getLastLocationAccess()
getLastLocationAccess
in interface MemoryAccess
public void setLastLocationAccess(MemoryNode newlla)
setLastLocationAccess
in interface MemoryAccess
newlla
- the MemoryNode
that represents the last kill of the locationpublic 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 FixedAccessNode asFixedNode()
asFixedNode
in class FloatingAccessNode