public abstract class AbstractCompareAndSwapNode extends FixedAccessNode implements 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
OnHeapMemoryAccess.BarrierType
DeoptimizingNode.DeoptAfter, DeoptimizingNode.DeoptBefore, DeoptimizingNode.DeoptDuring
Modifier and Type | Field and Description |
---|---|
static NodeClass<AbstractCompareAndSwapNode> |
TYPE |
barrierType, guard, location, nullCheck
deoptReasonAndAction, deoptSpeculation
stateBefore
next
NODE_LIST, NOT_ITERABLE, TRACK_CREATION_POSITION, WithAllEdges, WithNoEdges, WithOnlyInputEdges, WithOnlySucessorEdges
Constructor and Description |
---|
AbstractCompareAndSwapNode(NodeClass<? extends AbstractCompareAndSwapNode> c,
AddressNode address,
org.graalvm.word.LocationIdentity location,
ValueNode expectedValue,
ValueNode newValue,
OnHeapMemoryAccess.BarrierType barrierType,
Stamp stamp) |
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.
|
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, getNullCheck, setAddress, setGuard, setLastLocationAccess, setNullCheck
getDeoptReasonAndAction, getDeoptSpeculation, setImplicitDeoptimization
setStateBefore, stateBefore
asNode, next, setNext
asConstant, asJavaConstant, asSerializableConstant, getStackKind, graph, hasUsagesOtherThan, inferStamp, isAllowedUsageType, isConstant, isConstantPredicate, isDefaultConstant, isIllegalConstant, isJavaConstant, isNullConstant, isSerializableConstant, replaceAtAllUsages, replaceAtUsages, setStamp, stamp, updateStamp
afterClone, applyInputs, applySuccessors, assertFalse, assertTrue, cfgPredecessors, cfgSuccessors, clearInputs, clearNodeSourcePosition, clearSuccessors, copyWithInputs, copyWithInputs, dataFlowEquals, estimatedNodeCycles, estimatedNodeSize, fail, formatTo, getCreationPosition, getDebug, getDebugProperties, getDebugProperties, getInsertionPosition, getNodeClass, getNodeSourcePosition, getOptions, getUsageCount, hasExactlyOneUsage, hashCode, hasMoreThanOneUsage, hasNoUsages, hasOnlyUsagesOfType, hasUsages, inputPositions, inputs, isAlive, isDeleted, isUnregistered, markDeleted, maybeNotifyZeroUsages, modCount, predecessor, pushInputs, removeUsage, replaceAllInputs, replaceAndDelete, replaceAtMatchingUsages, replaceAtPredecessor, replaceAtUsages, replaceAtUsages, replaceAtUsages, replaceAtUsages, replaceAtUsagesAndDelete, replaceAtUsagesAndDelete, replaceFirstInput, replaceFirstInput, replaceFirstSuccessor, safeDelete, setCreationPosition, setInsertionPosition, setNodeSourcePosition, simplify, successorPositions, successors, toString, toString, updateNodeSourcePosition, updatePredecessor, updateUsages, updateUsagesInterface, usages, valueEquals, verifyEdges, verifyInputs, verifySourcePosition, withNodeSourcePosition
clone, equals, finalize, getClass, notify, notifyAll, wait, wait, wait
states
asNode
generate
getAddress, setAddress
getLastLocationAccess, getLocationIdentity, setLastLocationAccess
canUseAsStateDuring
public static final NodeClass<AbstractCompareAndSwapNode> TYPE
public AbstractCompareAndSwapNode(NodeClass<? extends AbstractCompareAndSwapNode> c, AddressNode address, org.graalvm.word.LocationIdentity location, ValueNode expectedValue, ValueNode newValue, OnHeapMemoryAccess.BarrierType barrierType, Stamp stamp)
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 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