public abstract class AbstractCompareAndSwapNode extends FixedAccessNode implements OrderedMemoryAccess, StateSplit, LIRLowerableAccess, SingleMemoryKill
Node.ConstantNodeParameter, Node.EdgeVisitor, Node.IndirectCanonicalization, Node.InjectedNodeParameter, Node.Input, Node.NodeInsertionStackTrace, Node.NodeIntrinsic, Node.NodeIntrinsicFactory, Node.OptionalInput, Node.Successor, Node.ValueNumberable
MemoryKill.NoLocation
OnHeapMemoryAccess.BarrierType
DeoptimizingNode.DeoptAfter, DeoptimizingNode.DeoptBefore, DeoptimizingNode.DeoptDuring
Modifier and Type | Field and Description |
---|---|
protected MemoryOrderMode |
memoryOrder |
static NodeClass<AbstractCompareAndSwapNode> |
TYPE |
barrierType, guard, location, usedAsNullCheck
deoptReasonAndAction, deoptSpeculation
stateBefore
next
EMPTY_ARRAY, stamp
NODE_LIST, NOT_ITERABLE, TRACK_CREATION_POSITION, WithAllEdges, WithNoEdges, WithOnlyInputEdges, WithOnlySucessorEdges
MULTI_KILL_NO_LOCATION, NO_LOCATION
Constructor and Description |
---|
AbstractCompareAndSwapNode(NodeClass<? extends AbstractCompareAndSwapNode> c,
AddressNode address,
org.graalvm.word.LocationIdentity location,
ValueNode expectedValue,
ValueNode newValue,
OnHeapMemoryAccess.BarrierType barrierType,
Stamp stamp,
MemoryOrderMode memoryOrder) |
Modifier and Type | Method and Description |
---|---|
boolean |
canNullCheck()
Determines if the memory touch operation represented by this node can use OS level semantics
for representing the null check of the memory location with an operating system level trap.
|
Stamp |
getAccessStamp(NodeView view) |
ValueNode |
getExpectedValue() |
org.graalvm.word.LocationIdentity |
getKilledLocationIdentity()
This method is used to determine which memory location is killed by this node.
|
MemoryOrderMode |
getMemoryOrder()
Retrieves the node's required memory ordering.
|
ValueNode |
getNewValue() |
boolean |
hasSideEffect()
Determines if this node has a side-effect.
|
void |
setStateAfter(FrameState x)
Sets the
FrameState corresponding to the state of the JVM after execution of this
node. |
FrameState |
stateAfter()
Gets the
FrameState corresponding to the state of the JVM after execution of this
node. |
canDeoptimize, getAddress, getBarrierType, getGuard, getLastLocationAccess, getLocationIdentity, getUsedAsNullCheck, setAddress, setGuard, setLastLocationAccess, setUsedAsNullCheck
getDeoptReasonAndAction, getDeoptSpeculation, setImplicitDeoptimization
setStateBefore, stateBefore
asFixedWithNextNode, next, setNext
asFixedNode, verify
asConstant, asJavaConstant, asNode, asSerializableConstant, checkReplaceAtUsagesInvariants, getStackKind, graph, hasUsagesOtherThan, inferStamp, isAllowedUsageType, isConstant, isConstantPredicate, isDefaultConstant, isIllegalConstant, isJavaConstant, isNullConstant, isSerializableConstant, recursivelyDataFlowEqualsUpTo, setStamp, stamp, updateStamp, updateUsagesInterface
afterClone, applyInputs, applySuccessors, assertFalse, assertTrue, cfgPredecessors, cfgSuccessors, clearInputs, clearNodeSourcePosition, clearSuccessors, copyWithInputs, copyWithInputs, dataFlowEquals, dynamicNodeSizeEstimate, estimatedNodeCycles, estimatedNodeSize, fail, formatTo, getCreationPosition, getDebug, getDebugProperties, getDebugProperties, getInsertionPosition, getNodeClass, getNodeSourcePosition, getOptions, getUsageCount, hasExactlyOneUsage, hasExactlyOneUsageOfType, 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, toString, updateNodeSourcePosition, updatePredecessor, updateUsages, usages, valueEquals, verifyEdges, verifyInputs, verifySourcePosition, withNodeSourcePosition
clone, equals, getClass, notify, notifyAll, wait, wait, wait
ordersMemoryAccesses
states
asFixedNode
generate
getAddress, setAddress
getLastLocationAccess, getLocationIdentity, setLastLocationAccess
asNode
asMultiMemoryKill, asSingleMemoryKill, isMemoryKill, isMultiMemoryKill, isSingleMemoryKill
canUseAsStateDuring
validateDeoptFrameStates
public static final NodeClass<AbstractCompareAndSwapNode> TYPE
protected final MemoryOrderMode memoryOrder
public AbstractCompareAndSwapNode(NodeClass<? extends AbstractCompareAndSwapNode> c, AddressNode address, org.graalvm.word.LocationIdentity location, ValueNode expectedValue, ValueNode newValue, OnHeapMemoryAccess.BarrierType barrierType, Stamp stamp, MemoryOrderMode memoryOrder)
public FrameState stateAfter()
StateSplit
FrameState
corresponding to the state of the JVM after execution of this
node.stateAfter
in interface StateSplit
public void setStateAfter(FrameState x)
StateSplit
FrameState
corresponding to the state of the JVM after execution of this
node.setStateAfter
in interface StateSplit
public boolean hasSideEffect()
StateSplit
FrameState
nodes.hasSideEffect
in interface StateSplit
public ValueNode getExpectedValue()
public ValueNode getNewValue()
public final MemoryOrderMode getMemoryOrder()
OrderedMemoryAccess
getMemoryOrder
in interface OrderedMemoryAccess
public boolean canNullCheck()
AddressableMemoryAccess
canNullCheck
in interface AddressableMemoryAccess
public Stamp getAccessStamp(NodeView view)
getAccessStamp
in interface LIRLowerableAccess
public org.graalvm.word.LocationIdentity getKilledLocationIdentity()
SingleMemoryKill
LocationIdentity.any()
will kill all memory locations.getKilledLocationIdentity
in interface SingleMemoryKill