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.ValueNumberableMemoryCheckpoint.Multi, MemoryCheckpoint.Single, MemoryCheckpoint.TypeAssertionDeoptimizingNode.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 |
stateAfternextNODE_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, stateAfterasNode, next, setNextasConstant, 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, waitasNodehasSideEffect, setStateAfter, stateAfterstatespublic 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()
DeoptimizingNodecanDeoptimize in interface DeoptimizingNodepublic FrameState stateBefore()
stateBefore in interface DeoptimizingNode.DeoptBeforepublic void setStateBefore(FrameState f)
DeoptimizingNode.DeoptBeforeFrameState describing the program state before the execution of this
node.setStateBefore in interface DeoptimizingNode.DeoptBeforepublic MonitorIdNode getMonitorId()