public class GuardNode extends FloatingAnchoredNode implements Canonicalizable, GuardingNode, DeoptimizingGuard, IterableNodeType
Node.ConstantNodeParameter, Node.EdgeVisitor, Node.IndirectCanonicalization, Node.InjectedNodeParameter, Node.Input, Node.NodeInsertionStackTrace, Node.NodeIntrinsic, Node.NodeIntrinsicFactory, Node.OptionalInput, Node.Successor, Node.ValueNumberableCanonicalizable.Binary<T extends Node>, Canonicalizable.BinaryCommutative<T extends Node>, Canonicalizable.Ternary<T extends Node>, Canonicalizable.Unary<T extends Node>StaticDeoptimizingNode.GuardPriority| Modifier and Type | Field and Description |
|---|---|
protected DeoptimizationAction |
action |
protected LogicNode |
condition |
protected boolean |
negated |
protected NodeSourcePosition |
noDeoptSuccessorPosition |
protected DeoptimizationReason |
reason |
protected Speculation |
speculation |
static NodeClass<GuardNode> |
TYPE |
anchorEMPTY_ARRAY, stampNODE_LIST, NOT_ITERABLE, TRACK_CREATION_POSITION, WithAllEdges, WithNoEdges, WithOnlyInputEdges, WithOnlySucessorEdges| Modifier | Constructor and Description |
|---|---|
|
GuardNode(LogicNode condition,
AnchoringNode anchor,
DeoptimizationReason reason,
DeoptimizationAction action,
boolean negated,
Speculation speculation,
NodeSourcePosition noDeoptSuccessorPosition) |
protected |
GuardNode(NodeClass<? extends GuardNode> c,
LogicNode condition,
AnchoringNode anchor,
DeoptimizationReason reason,
DeoptimizationAction action,
boolean negated,
Speculation speculation,
NodeSourcePosition noDeoptSuccessorPosition) |
| Modifier and Type | Method and Description |
|---|---|
Node |
canonical(CanonicalizerTool tool)
Implementations of this method can provide local optimizations like constant folding and
strength reduction.
|
DeoptimizationAction |
getAction() |
LogicNode |
getCondition()
Gets the instruction that produces the tested boolean value.
|
NodeSourcePosition |
getNoDeoptSuccessorPosition() |
DeoptimizationReason |
getReason() |
Speculation |
getSpeculation() |
boolean |
isNegated()
Returns true iff the guard deoptimizes when its condition is true, false otherwise.
|
FixedWithNextNode |
lowerGuard() |
void |
negate() |
void |
setAction(DeoptimizationAction invalidaterecompile) |
void |
setCondition(LogicNode x,
boolean negated) |
void |
setNoDeoptSuccessorPosition(NodeSourcePosition noDeoptSuccessorPosition) |
void |
setReason(DeoptimizationReason reason) |
void |
setSpeculation(Speculation speculation) |
String |
toString(Verbosity verbosity)
Creates a String representation for
this with a given Verbosity. |
getAnchor, setAnchorasConstant, asJavaConstant, asNode, asSerializableConstant, checkReplaceAtUsagesInvariants, getStackKind, graph, hasUsagesOtherThan, inferStamp, isAllowedUsageType, isConstant, isConstantPredicate, isDefaultConstant, isIllegalConstant, isJavaConstant, isNullConstant, isSerializableConstant, recursivelyDataFlowEqualsUpTo, setStamp, stamp, updateStamp, updateUsagesInterfaceafterClone, applyInputs, applySuccessors, assertFalse, assertTrue, cfgPredecessors, cfgSuccessors, clearInputs, clearNodeSourcePosition, clearSuccessors, copyWithInputs, copyWithInputs, dataFlowEquals, dynamicNodeSizeEstimate, estimatedNodeCycles, estimatedNodeSize, fail, formatTo, getCreationPosition, getDebug, getDebugProperties, getDebugProperties, getInsertionPosition, getNodeClass, getNodeSourcePosition, getOptions, getUsageCount, hasExactlyOneUsage, hashCode, hasMoreThanOneUsage, hasNoUsages, hasOnlyUsagesOfType, hasUsages, hasUsagesOfType, inputPositions, inputs, isAlive, isDeleted, isUnregistered, markDeleted, maybeNotifyZeroUsages, modCount, predecessor, pushInputs, removeUsage, replaceAllInputs, replaceAndDelete, replaceAtAllUsages, replaceAtMatchingUsages, replaceAtPredecessor, replaceAtUsages, replaceAtUsages, replaceAtUsages, replaceAtUsages, replaceAtUsages, replaceAtUsagesAndDelete, replaceAtUsagesAndDelete, replaceFirstInput, replaceFirstSuccessor, safeDelete, setCreationPosition, setInsertionPosition, setNodeSourcePosition, singleUsage, successorPositions, successors, toString, updateNodeSourcePosition, updatePredecessor, updateUsages, usages, valueEquals, verify, verifyEdges, verifyInputs, verifySourcePosition, withNodeSourcePositionclone, equals, getClass, notify, notifyAll, wait, wait, waitaddCallerToNoDeoptSuccessorPositioncomputePriority, mergeActionsasNodeprotected LogicNode condition
protected DeoptimizationReason reason
protected DeoptimizationAction action
protected Speculation speculation
protected boolean negated
protected NodeSourcePosition noDeoptSuccessorPosition
public GuardNode(LogicNode condition, AnchoringNode anchor, DeoptimizationReason reason, DeoptimizationAction action, boolean negated, Speculation speculation, NodeSourcePosition noDeoptSuccessorPosition)
protected GuardNode(NodeClass<? extends GuardNode> c, LogicNode condition, AnchoringNode anchor, DeoptimizationReason reason, DeoptimizationAction action, boolean negated, Speculation speculation, NodeSourcePosition noDeoptSuccessorPosition)
public LogicNode getCondition()
GuardNode.isNegated() returns true in
which case it deoptimizes when the condition value is true).getCondition in interface DeoptimizingGuardpublic void setCondition(LogicNode x, boolean negated)
setCondition in interface DeoptimizingGuardpublic boolean isNegated()
isNegated in interface DeoptimizingGuardpublic DeoptimizationReason getReason()
getReason in interface StaticDeoptimizingNodepublic DeoptimizationAction getAction()
getAction in interface StaticDeoptimizingNodepublic Speculation getSpeculation()
getSpeculation in interface StaticDeoptimizingNodepublic void setSpeculation(Speculation speculation)
public String toString(Verbosity verbosity)
Nodethis with a given Verbosity.public 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 MetaAccessProviderpublic FixedWithNextNode lowerGuard()
public void negate()
public void setAction(DeoptimizationAction invalidaterecompile)
setAction in interface StaticDeoptimizingNodepublic void setReason(DeoptimizationReason reason)
setReason in interface StaticDeoptimizingNodepublic NodeSourcePosition getNoDeoptSuccessorPosition()
getNoDeoptSuccessorPosition in interface DeoptimizingGuardpublic void setNoDeoptSuccessorPosition(NodeSourcePosition noDeoptSuccessorPosition)
setNoDeoptSuccessorPosition in interface DeoptimizingGuard