public final class RegisterFinalizerNode extends AbstractStateSplit implements Canonicalizable.Unary<ValueNode>, LIRLowerable, Virtualizable, DeoptimizingNode.DeoptAfter
Node.ConstantNodeParameter, Node.InjectedNodeParameter, Node.Input, Node.NodeIntrinsic, Node.OptionalInput, Node.Successor, Node.ValueNumberable
Canonicalizable.Binary<T extends Node>, Canonicalizable.BinaryCommutative<T extends Node>, Canonicalizable.Unary<T extends Node>
DeoptimizingNode.DeoptAfter, DeoptimizingNode.DeoptBefore, DeoptimizingNode.DeoptDuring
Modifier and Type | Field and Description |
---|---|
(package private) FrameState |
deoptState |
static NodeClass<RegisterFinalizerNode> |
TYPE |
(package private) ValueNode |
value |
stateAfter
next
NODE_LIST, NOT_ITERABLE, USE_UNSAFE_TO_CLONE, WithAllEdges, WithNoEdges, WithOnlyInputEdges, WithOnlySucessorEdges
Constructor and Description |
---|
RegisterFinalizerNode(ValueNode value) |
Modifier and Type | Method and Description |
---|---|
boolean |
canDeoptimize()
Determines if this node needs deoptimization information.
|
ValueNode |
canonical(CanonicalizerTool tool,
ValueNode forValue) |
void |
generate(NodeLIRBuilderTool gen) |
ValueNode |
getValue() |
static boolean |
mayHaveFinalizer(ValueNode object,
jdk.internal.jvmci.meta.Assumptions assumptions)
Determines if the compiler should emit code to test whether a given object has a finalizer
that must be registered with the runtime upon object initialization.
|
static void |
register(Object thisObj) |
void |
virtualize(VirtualizerTool tool)
A node class can implement this method to convey information about what its effect would be
if some of its inputs were virtualized.
|
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
canonical
asNode, hasSideEffect, setStateAfter, stateAfter
states
public static final NodeClass<RegisterFinalizerNode> TYPE
FrameState deoptState
public RegisterFinalizerNode(ValueNode value)
public ValueNode getValue()
getValue
in interface Canonicalizable.Unary<ValueNode>
public void generate(NodeLIRBuilderTool gen)
generate
in interface LIRLowerable
public static boolean mayHaveFinalizer(ValueNode object, jdk.internal.jvmci.meta.Assumptions assumptions)
public ValueNode canonical(CanonicalizerTool tool, ValueNode forValue)
canonical
in interface Canonicalizable.Unary<ValueNode>
public void virtualize(VirtualizerTool tool)
Virtualizable
virtualize
in interface Virtualizable
tool
- the tool used to describe the effects of this nodepublic boolean canDeoptimize()
DeoptimizingNode
canDeoptimize
in interface DeoptimizingNode