public class DynamicNewArrayNode extends AbstractNewArrayNode implements Canonicalizable
DynamicNewArrayNode
is used for allocation of arrays when the type is not a
compile-time constant.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 |
elementType |
protected jdk.internal.jvmci.meta.Kind |
knownElementKind
A non-null value indicating the worst case element type.
|
static NodeClass<DynamicNewArrayNode> |
TYPE |
length
fillContents
stateBefore
next
NODE_LIST, NOT_ITERABLE, USE_UNSAFE_TO_CLONE, WithAllEdges, WithNoEdges, WithOnlyInputEdges, WithOnlySucessorEdges
Modifier | Constructor and Description |
---|---|
|
DynamicNewArrayNode(jdk.internal.jvmci.meta.MetaAccessProvider metaAccess,
ValueNode elementType,
ValueNode length,
boolean fillContents,
jdk.internal.jvmci.meta.Kind knownElementKind) |
protected |
DynamicNewArrayNode(NodeClass<? extends DynamicNewArrayNode> c,
ValueNode elementType,
ValueNode length,
boolean fillContents,
jdk.internal.jvmci.meta.Kind knownElementKind,
FrameState stateBefore,
jdk.internal.jvmci.meta.MetaAccessProvider metaAccess) |
|
DynamicNewArrayNode(ValueNode elementType,
ValueNode length,
boolean fillContents) |
Modifier and Type | Method and Description |
---|---|
Node |
canonical(CanonicalizerTool tool) |
private static Stamp |
computeStamp(jdk.internal.jvmci.meta.Kind knownElementKind,
jdk.internal.jvmci.meta.MetaAccessProvider metaAccess) |
protected NewArrayNode |
createNewArrayNode(jdk.internal.jvmci.meta.ResolvedJavaType type)
Hook for subclasses to instantiate a subclass of
NewArrayNode . |
ValueNode |
getElementType() |
jdk.internal.jvmci.meta.Kind |
getKnownElementKind() |
private static Object |
newArray(Class<?> componentType,
int length,
boolean fillContents,
jdk.internal.jvmci.meta.Kind knownElementKind) |
static Object |
newArray(Class<?> componentType,
int length,
jdk.internal.jvmci.meta.Kind knownElementKind) |
static Object |
newUninitializedArray(Class<?> componentType,
int length,
jdk.internal.jvmci.meta.Kind knownElementKind) |
void |
simplify(SimplifierTool tool) |
static boolean |
throwsIllegalArgumentException(Class<?> elementType) |
static boolean |
throwsIllegalArgumentException(jdk.internal.jvmci.meta.ResolvedJavaType elementType) |
dimension, dimensionCount, length
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<DynamicNewArrayNode> TYPE
ValueNode elementType
protected final jdk.internal.jvmci.meta.Kind knownElementKind
public DynamicNewArrayNode(ValueNode elementType, ValueNode length, boolean fillContents)
public DynamicNewArrayNode(jdk.internal.jvmci.meta.MetaAccessProvider metaAccess, ValueNode elementType, ValueNode length, boolean fillContents, jdk.internal.jvmci.meta.Kind knownElementKind)
protected DynamicNewArrayNode(NodeClass<? extends DynamicNewArrayNode> c, ValueNode elementType, ValueNode length, boolean fillContents, jdk.internal.jvmci.meta.Kind knownElementKind, FrameState stateBefore, jdk.internal.jvmci.meta.MetaAccessProvider metaAccess)
private static Stamp computeStamp(jdk.internal.jvmci.meta.Kind knownElementKind, jdk.internal.jvmci.meta.MetaAccessProvider metaAccess)
public ValueNode getElementType()
public jdk.internal.jvmci.meta.Kind getKnownElementKind()
public void simplify(SimplifierTool tool)
simplify
in interface Simplifiable
simplify
in class AbstractNewArrayNode
public Node canonical(CanonicalizerTool tool)
canonical
in interface Canonicalizable
protected NewArrayNode createNewArrayNode(jdk.internal.jvmci.meta.ResolvedJavaType type)
NewArrayNode
.public static boolean throwsIllegalArgumentException(Class<?> elementType)
public static boolean throwsIllegalArgumentException(jdk.internal.jvmci.meta.ResolvedJavaType elementType)
private static Object newArray(Class<?> componentType, int length, boolean fillContents, jdk.internal.jvmci.meta.Kind knownElementKind)
public static Object newArray(Class<?> componentType, int length, jdk.internal.jvmci.meta.Kind knownElementKind)
public static Object newUninitializedArray(Class<?> componentType, int length, jdk.internal.jvmci.meta.Kind knownElementKind)