public class DynamicNewInstanceNode extends AbstractNewObjectNode implements Canonicalizable
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>
DeoptimizingNode.DeoptAfter, DeoptimizingNode.DeoptBefore, DeoptimizingNode.DeoptDuring
Modifier and Type | Field and Description |
---|---|
(package private) ValueNode |
clazz |
static NodeClass<DynamicNewInstanceNode> |
TYPE |
fillContents
stateBefore
next
NODE_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, lower
setStateBefore, stateBefore
asNode, next, setNext
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, successors, toString, toString, updatePredecessor, updateUsages, updateUsagesInterface, usages, valueEquals, verifyEdges, verifyInputs
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
states
public 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)
Node
Simplifiable
. The implementation in
Node
exists to obviate the need to cast a node before invoking
Simplifiable.simplify(SimplifierTool)
.simplify
in interface Simplifiable
simplify
in class AbstractNewObjectNode
public Node canonical(CanonicalizerTool tool)
Canonicalizable
null
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 Canonicalizable
tool
- provides access to runtime interfaces like MetaAccessProvider
protected NewInstanceNode createNewInstanceNode(ResolvedJavaType type)
NewInstanceNode
.public static boolean throwsInstantiationException(Class<?> type)
public static boolean throwsInstantiationException(ResolvedJavaType type, MetaAccessProvider metaAccess)