public final class CheckCastDynamicNode extends FixedWithNextNode implements Canonicalizable.Binary<ValueNode>, Lowerable
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>
Modifier and Type | Field and Description |
---|---|
protected boolean |
forStoreCheck
Determines the exception thrown by this node if the check fails:
ClassCastException
if false; ArrayStoreException if true. |
(package private) ValueNode |
hub |
(package private) ValueNode |
object |
static NodeClass<CheckCastDynamicNode> |
TYPE |
next
NODE_LIST, NOT_ITERABLE, USE_UNSAFE_TO_CLONE, WithAllEdges, WithNoEdges, WithOnlyInputEdges, WithOnlySucessorEdges
Constructor and Description |
---|
CheckCastDynamicNode(ValueNode hub,
ValueNode object,
boolean forStoreCheck) |
Modifier and Type | Method and Description |
---|---|
ValueNode |
canonical(CanonicalizerTool tool,
ValueNode forObject,
ValueNode forHub) |
ValueNode |
getX() |
ValueNode |
getY() |
ValueNode |
hub()
Gets the runtime-loaded type being cast to.
|
boolean |
inferStamp()
This method can be overridden by subclasses of
ValueNode if they need to recompute
their stamp if their inputs change. |
boolean |
isForStoreCheck() |
void |
lower(LoweringTool tool)
Expand this node into lower level nodes expressing the same semantics.
|
ValueNode |
object() |
asNode, next, setNext
asConstant, asJavaConstant, getKind, graph, 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
public static final NodeClass<CheckCastDynamicNode> TYPE
protected final boolean forStoreCheck
ClassCastException
if false; ArrayStoreException
if true.public CheckCastDynamicNode(ValueNode hub, ValueNode object, boolean forStoreCheck)
public ValueNode getX()
getX
in interface Canonicalizable.Binary<ValueNode>
public ValueNode getY()
getY
in interface Canonicalizable.Binary<ValueNode>
public boolean isForStoreCheck()
public void lower(LoweringTool tool)
Lowerable
public boolean inferStamp()
ValueNode
ValueNode
if they need to recompute
their stamp if their inputs change. A typical implementation will compute the stamp and pass
it to ValueNode.updateStamp(Stamp)
, whose return value can be used as the result of this
method.inferStamp
in class ValueNode
public ValueNode canonical(CanonicalizerTool tool, ValueNode forObject, ValueNode forHub)
canonical
in interface Canonicalizable.Binary<ValueNode>