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)
Similar to
Canonicalizable.canonical(CanonicalizerTool) , except that
implementations should act as if the current input of the node was the given one, i.e.,
they should never look at the inputs via the this pointer. |
void |
generate(NodeLIRBuilderTool gen) |
ValueNode |
getValue()
Gets the current value of the input, so that calling
Canonicalizable.Unary.canonical(CanonicalizerTool, Node) with the value returned from this method
should behave exactly like Canonicalizable.canonical(CanonicalizerTool) . |
static boolean |
mayHaveFinalizer(ValueNode object,
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()
Canonicalizable.Unary
Canonicalizable.Unary.canonical(CanonicalizerTool, Node)
with the value returned from this method
should behave exactly like Canonicalizable.canonical(CanonicalizerTool)
.getValue
in interface Canonicalizable.Unary<ValueNode>
public void generate(NodeLIRBuilderTool gen)
generate
in interface LIRLowerable
public static boolean mayHaveFinalizer(ValueNode object, Assumptions assumptions)
public ValueNode canonical(CanonicalizerTool tool, ValueNode forValue)
Canonicalizable.Unary
Canonicalizable.canonical(CanonicalizerTool)
, except that
implementations should act as if the current input of the node was the given one, i.e.,
they should never look at the inputs via the this pointer.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