public final class DynamicDeoptimizeNode extends AbstractDeoptimizeNode implements LIRLowerable, Lowerable, Canonicalizable
Node.ConstantNodeParameter, Node.InjectedNodeParameter, Node.Input, Node.NodeIntrinsic, Node.OptionalInput, Node.Successor, Node.ValueNumberableCanonicalizable.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) ValueNode |
actionAndReason |
(package private) ValueNode |
speculation |
static NodeClass<DynamicDeoptimizeNode> |
TYPE |
stateBeforeNODE_LIST, NOT_ITERABLE, USE_UNSAFE_TO_CLONE, WithAllEdges, WithNoEdges, WithOnlyInputEdges, WithOnlySucessorEdges| Constructor and Description |
|---|
DynamicDeoptimizeNode(ValueNode actionAndReason,
ValueNode speculation) |
| Modifier and Type | Method and Description |
|---|---|
Node |
canonical(CanonicalizerTool tool)
Implementations of this method can provide local optimizations like constant folding and
strength reduction.
|
void |
generate(NodeLIRBuilderTool generator) |
ValueNode |
getActionAndReason() |
ValueNode |
getActionAndReason(MetaAccessProvider metaAccess) |
ValueNode |
getSpeculation() |
ValueNode |
getSpeculation(MetaAccessProvider metaAccess) |
void |
lower(LoweringTool tool)
Expand this node into lower level nodes expressing the same semantics.
|
canDeoptimize, setStateBefore, stateBeforeasConstant, 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, waitstatespublic static final NodeClass<DynamicDeoptimizeNode> TYPE
ValueNode actionAndReason
ValueNode speculation
public DynamicDeoptimizeNode(ValueNode actionAndReason, ValueNode speculation)
public ValueNode getActionAndReason()
public ValueNode getSpeculation()
public ValueNode getActionAndReason(MetaAccessProvider metaAccess)
getActionAndReason in class AbstractDeoptimizeNodepublic ValueNode getSpeculation(MetaAccessProvider metaAccess)
getSpeculation in class AbstractDeoptimizeNodepublic void lower(LoweringTool tool)
Lowerablepublic void generate(NodeLIRBuilderTool generator)
generate in interface LIRLowerablepublic Node canonical(CanonicalizerTool tool)
Canonicalizablenull will delete the current node and replace it with null at
all usages. Note that it is not necessary to delete floating nodes that have no more usages
this way - they will be deleted automatically.canonical in interface Canonicalizabletool - provides access to runtime interfaces like MetaAccessProvider