public final class FloatingReadNode extends FloatingAccessNode implements LIRLowerable, Canonicalizable
Node.ConstantNodeParameter, Node.InjectedNodeParameter, Node.Input, Node.NodeIntrinsic, Node.OptionalInput, Node.Successor, Node.ValueNumberableCanonicalizable.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, locationguardNODE_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, getLocationIdentitygetGuard, setGuardasNodeasConstant, asJavaConstant, getKind, graph, inferStamp, isAllowedUsageType, isConstant, isConstantPredicate, isNullConstant, setStamp, stamp, updateStampacceptInputs, 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, verifyInputsclone, finalize, getClass, notify, notifyAll, wait, wait, waitasNode, getGuard, setGuardpublic 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 MemoryAccesspublic void setLastLocationAccess(MemoryNode newlla)
setLastLocationAccess in interface MemoryAccessnewlla - the MemoryNode that represents the last kill of the locationpublic void generate(NodeLIRBuilderTool gen)
generate in interface LIRLowerablepublic Node canonical(CanonicalizerTool tool)
Canonicalizablenull 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 Canonicalizabletool - provides access to runtime interfaces like MetaAccessProviderpublic FixedAccessNode asFixedNode()
asFixedNode in class FloatingAccessNode