public class VirtualArrayNode extends VirtualObjectNode implements ArrayLengthProvider
Node.ConstantNodeParameter, Node.InjectedNodeParameter, Node.Input, Node.NodeIntrinsic, Node.OptionalInput, Node.Successor, Node.ValueNumberable
Modifier and Type | Field and Description |
---|---|
protected ResolvedJavaType |
componentType |
protected int |
length |
static NodeClass<VirtualArrayNode> |
TYPE |
hasIdentity
NODE_LIST, NOT_ITERABLE, USE_UNSAFE_TO_CLONE, WithAllEdges, WithNoEdges, WithOnlyInputEdges, WithOnlySucessorEdges
Modifier | Constructor and Description |
---|---|
protected |
VirtualArrayNode(NodeClass<? extends VirtualObjectNode> c,
ResolvedJavaType componentType,
int length) |
|
VirtualArrayNode(ResolvedJavaType componentType,
int length) |
Modifier and Type | Method and Description |
---|---|
ResolvedJavaType |
componentType() |
VirtualArrayNode |
duplicate()
Returns an exact duplicate of this virtual object node, which has not been added to the graph
yet.
|
int |
entryCount()
The number of entries this virtual object has.
|
int |
entryIndexForOffset(long constantOffset,
Kind expectedEntryKind)
If the given index denotes an entry in this virtual object, the index of this entry is
returned.
|
static int |
entryIndexForOffset(long constantOffset,
Kind expectedEntryKind,
ResolvedJavaType componentType,
int length) |
Kind |
entryKind(int index)
Returns the
Kind of the entry at the given index. |
String |
entryName(int index)
Returns the name of the entry at the given index.
|
void |
generate(NodeLIRBuilderTool gen) |
ValueNode |
getMaterializedRepresentation(FixedNode fixed,
ValueNode[] entries,
LockState locks)
Returns a node that can be used to materialize this virtual object.
|
ValueNode |
length() |
String |
toString(Verbosity verbosity)
Creates a String representation for this node with a given
Verbosity . |
ResolvedJavaType |
type()
The type of object described by this
VirtualObjectNode . |
afterClone, getObjectId, hasIdentity, resetObjectId, setIdentity, setObjectId
asConstant, asJavaConstant, asNode, getKind, graph, inferStamp, isAllowedUsageType, isConstant, isConstantPredicate, isNullConstant, setStamp, stamp, updateStamp
acceptInputs, acceptSuccessors, 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, updatePredecessor, updateUsages, updateUsagesInterface, usages, valueEquals, verify, verifyEdges, verifyInputs
public static final NodeClass<VirtualArrayNode> TYPE
protected final ResolvedJavaType componentType
protected final int length
public VirtualArrayNode(ResolvedJavaType componentType, int length)
protected VirtualArrayNode(NodeClass<? extends VirtualObjectNode> c, ResolvedJavaType componentType, int length)
public ResolvedJavaType type()
VirtualObjectNode
VirtualObjectNode
. In case of arrays, this is
the array type (and not the component type).type
in class VirtualObjectNode
public ResolvedJavaType componentType()
public int entryCount()
VirtualObjectNode
entryCount
in class VirtualObjectNode
public void generate(NodeLIRBuilderTool gen)
generate
in interface LIRLowerable
generate
in class VirtualObjectNode
public String toString(Verbosity verbosity)
Node
Verbosity
.public String entryName(int index)
VirtualObjectNode
entryName
in class VirtualObjectNode
public int entryIndexForOffset(long constantOffset, Kind expectedEntryKind)
VirtualObjectNode
entryIndexForOffset
in class VirtualObjectNode
constantOffset
- offset, where the value is placed.expectedEntryKind
- Specifies which type is expected at this offset (Is important when
doing implicit casts, especially on big endian systems.public static int entryIndexForOffset(long constantOffset, Kind expectedEntryKind, ResolvedJavaType componentType, int length)
public Kind entryKind(int index)
VirtualObjectNode
Kind
of the entry at the given index.entryKind
in class VirtualObjectNode
public VirtualArrayNode duplicate()
VirtualObjectNode
duplicate
in class VirtualObjectNode
public ValueNode getMaterializedRepresentation(FixedNode fixed, ValueNode[] entries, LockState locks)
VirtualObjectNode
AllocatedObjectNode
then this node will be attached to a CommitAllocationNode
, otherwise the node will just be added to the graph.getMaterializedRepresentation
in class VirtualObjectNode
public ValueNode length()
length
in interface ArrayLengthProvider