public class DynamicNewInstanceNode extends AbstractNewObjectNode implements 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 |
clazz |
static NodeClass<DynamicNewInstanceNode> |
TYPE |
fillContentsstateBeforenextNODE_LIST, NOT_ITERABLE, USE_UNSAFE_TO_CLONE, WithAllEdges, WithNoEdges, WithOnlyInputEdges, WithOnlySucessorEdges| Modifier | Constructor and Description |
|---|---|
protected |
DynamicNewInstanceNode(NodeClass<? extends DynamicNewInstanceNode> c,
ValueNode clazz,
boolean fillContents,
FrameState stateBefore) |
|
DynamicNewInstanceNode(ValueNode clazz,
boolean fillContents) |
| Modifier and Type | Method and Description |
|---|---|
Node |
canonical(CanonicalizerTool tool)
Implementations of this method can provide local optimizations like constant folding and
strength reduction.
|
protected NewInstanceNode |
createNewInstanceNode(ResolvedJavaType type)
Hook for subclasses to instantiate a subclass of
NewInstanceNode. |
ValueNode |
getInstanceType() |
void |
simplify(SimplifierTool tool)
Must be overridden by subclasses that implement
Simplifiable. |
static boolean |
throwsInstantiationException(Class<?> type) |
static boolean |
throwsInstantiationException(ResolvedJavaType type,
MetaAccessProvider metaAccess) |
canDeoptimize, fillContents, lowersetStateBefore, stateBeforeasNode, next, setNextasConstant, 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, successors, toString, toString, updatePredecessor, updateUsages, updateUsagesInterface, usages, valueEquals, verifyEdges, verifyInputsclone, finalize, getClass, notify, notifyAll, wait, wait, waitstatespublic static final NodeClass<DynamicNewInstanceNode> TYPE
public DynamicNewInstanceNode(ValueNode clazz, boolean fillContents)
protected DynamicNewInstanceNode(NodeClass<? extends DynamicNewInstanceNode> c, ValueNode clazz, boolean fillContents, FrameState stateBefore)
public ValueNode getInstanceType()
public void simplify(SimplifierTool tool)
NodeSimplifiable. The implementation in
Node exists to obviate the need to cast a node before invoking
Simplifiable.simplify(SimplifierTool).simplify in interface Simplifiablesimplify in class AbstractNewObjectNodepublic 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 MetaAccessProviderprotected NewInstanceNode createNewInstanceNode(ResolvedJavaType type)
NewInstanceNode.public static boolean throwsInstantiationException(Class<?> type)
public static boolean throwsInstantiationException(ResolvedJavaType type, MetaAccessProvider metaAccess)