public abstract class AccessMonitorNode extends AbstractMemoryCheckpoint implements MemoryCheckpoint, DeoptimizingNode.DeoptBefore, DeoptimizingNode.DeoptAfter
AccessMonitorNode
is the base class of both monitor acquisition and release.
The Java bytecode specification allows non-balanced locking. Graal does not handle such cases and
throws a BailoutException
instead during graph building.
Node.ConstantNodeParameter, Node.InjectedNodeParameter, Node.Input, Node.NodeIntrinsic, Node.OptionalInput, Node.Successor, Node.ValueNumberable
MemoryCheckpoint.Multi, MemoryCheckpoint.Single, MemoryCheckpoint.TypeAssertion
DeoptimizingNode.DeoptAfter, DeoptimizingNode.DeoptBefore, DeoptimizingNode.DeoptDuring
Modifier and Type | Field and Description |
---|---|
(package private) MonitorIdNode |
monitorId |
(package private) ValueNode |
object |
(package private) FrameState |
stateBefore |
static NodeClass<AccessMonitorNode> |
TYPE |
stateAfter
next
NODE_LIST, NOT_ITERABLE, USE_UNSAFE_TO_CLONE, WithAllEdges, WithNoEdges, WithOnlyInputEdges, WithOnlySucessorEdges
Modifier | Constructor and Description |
---|---|
protected |
AccessMonitorNode(NodeClass<? extends AccessMonitorNode> c,
ValueNode object,
MonitorIdNode monitorId)
Creates a new AccessMonitor instruction.
|
Modifier and Type | Method and Description |
---|---|
boolean |
canDeoptimize()
Determines if this node needs deoptimization information.
|
MonitorIdNode |
getMonitorId() |
ValueNode |
object() |
void |
setStateBefore(FrameState f)
Sets the
FrameState describing the program state before the execution of this
node. |
FrameState |
stateBefore() |
hasSideEffect, setStateAfter, stateAfter
asNode, next, setNext
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
hasSideEffect, setStateAfter, stateAfter
states
public static final NodeClass<AccessMonitorNode> TYPE
FrameState stateBefore
MonitorIdNode monitorId
protected AccessMonitorNode(NodeClass<? extends AccessMonitorNode> c, ValueNode object, MonitorIdNode monitorId)
object
- the instruction producing the objectpublic boolean canDeoptimize()
DeoptimizingNode
canDeoptimize
in interface DeoptimizingNode
public FrameState stateBefore()
stateBefore
in interface DeoptimizingNode.DeoptBefore
public void setStateBefore(FrameState f)
DeoptimizingNode.DeoptBefore
FrameState
describing the program state before the execution of this
node.setStateBefore
in interface DeoptimizingNode.DeoptBefore
public MonitorIdNode getMonitorId()