public class InstanceOfDynamicNode extends LogicNode implements Canonicalizable.Binary<ValueNode>, Lowerable
InstanceOfDynamicNode
represents a type check where the type being checked is not
known at compile time. This is used, for instance, to intrinsify Class.isInstance(Object)
.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 |
---|---|
(package private) ValueNode |
mirror |
(package private) ValueNode |
object |
static NodeClass<InstanceOfDynamicNode> |
TYPE |
NODE_LIST, NOT_ITERABLE, USE_UNSAFE_TO_CLONE, WithAllEdges, WithNoEdges, WithOnlyInputEdges, WithOnlySucessorEdges
Constructor and Description |
---|
InstanceOfDynamicNode(ValueNode mirror,
ValueNode object) |
Modifier and Type | Method and Description |
---|---|
LogicNode |
canonical(CanonicalizerTool tool,
ValueNode forObject,
ValueNode forMirror) |
static LogicNode |
create(jdk.internal.jvmci.meta.ConstantReflectionProvider constantReflection,
ValueNode mirror,
ValueNode object) |
private static LogicNode |
findSynonym(jdk.internal.jvmci.meta.ConstantReflectionProvider constantReflection,
ValueNode forObject,
ValueNode forMirror) |
ValueNode |
getX() |
ValueNode |
getY() |
void |
lower(LoweringTool tool)
Expand this node into lower level nodes expressing the same semantics.
|
ValueNode |
mirror() |
ValueNode |
object() |
and, and, isContradiction, isTautology, or, or
asNode
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, verify, verifyEdges, verifyInputs
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
canonical
public static final NodeClass<InstanceOfDynamicNode> TYPE
public InstanceOfDynamicNode(ValueNode mirror, ValueNode object)
public static LogicNode create(jdk.internal.jvmci.meta.ConstantReflectionProvider constantReflection, ValueNode mirror, ValueNode object)
public void lower(LoweringTool tool)
Lowerable
private static LogicNode findSynonym(jdk.internal.jvmci.meta.ConstantReflectionProvider constantReflection, ValueNode forObject, ValueNode forMirror)
public LogicNode canonical(CanonicalizerTool tool, ValueNode forObject, ValueNode forMirror)
canonical
in interface Canonicalizable.Binary<ValueNode>
public ValueNode getX()
getX
in interface Canonicalizable.Binary<ValueNode>
public ValueNode getY()
getY
in interface Canonicalizable.Binary<ValueNode>