public abstract class VirtualObjectNode extends ValueNode implements LIRLowerable, IterableNodeType
Node.ConstantNodeParameter, Node.EdgeVisitor, Node.IndirectCanonicalization, Node.InjectedNodeParameter, Node.Input, Node.NodeInsertionStackTrace, Node.NodeIntrinsic, Node.NodeIntrinsicFactory, Node.OptionalInput, Node.Successor, Node.ValueNumberable| Modifier and Type | Field and Description |
|---|---|
protected boolean |
hasIdentity |
static NodeClass<VirtualObjectNode> |
TYPE |
EMPTY_ARRAY, stampNODE_LIST, NOT_ITERABLE, TRACK_CREATION_POSITION, WithAllEdges, WithNoEdges, WithOnlyInputEdges, WithOnlySucessorEdges| Modifier | Constructor and Description |
|---|---|
protected |
VirtualObjectNode(NodeClass<? extends VirtualObjectNode> c,
ResolvedJavaType type,
boolean hasIdentity) |
| Modifier and Type | Method and Description |
|---|---|
protected void |
afterClone(Node other) |
boolean |
canVirtualizeLargeByteArrayUnsafeRead(ValueNode entry,
int index,
JavaKind accessKind,
VirtualizerTool tool)
Checks that a read in a virtual object is a candidate for byte array virtualization.
|
abstract VirtualObjectNode |
duplicate()
Returns an exact duplicate of this virtual object node, which has not been added to the graph
yet.
|
abstract int |
entryCount()
The number of entries this virtual object has.
|
abstract int |
entryIndexForOffset(MetaAccessProvider metaAccess,
long constantOffset,
JavaKind expectedEntryKind)
If the given index denotes an entry in this virtual object, the index of this entry is
returned.
|
abstract JavaKind |
entryKind(MetaAccessExtensionProvider metaAccessExtensionProvider,
int index)
Returns the
JavaKind of the entry at the given index. |
abstract String |
entryName(int i)
Returns the name of the entry at the given index.
|
void |
generate(NodeLIRBuilderTool gen) |
abstract ValueNode |
getMaterializedRepresentation(FixedNode fixed,
ValueNode[] entries,
LockState locks)
Returns a node that can be used to materialize this virtual object.
|
int |
getObjectId() |
boolean |
hasIdentity()
Specifies whether this virtual object has an object identity.
|
boolean |
isVirtualByteArray(MetaAccessExtensionProvider metaAccessExtensionProvider) |
boolean |
isVirtualByteArrayAccess(MetaAccessExtensionProvider metaAccessExtensionProvider,
JavaKind accessKind) |
void |
resetObjectId() |
void |
setIdentity(boolean identity) |
void |
setObjectId(int objectId) |
abstract ResolvedJavaType |
type()
The type of object described by this
VirtualObjectNode. |
asConstant, asJavaConstant, asNode, asSerializableConstant, checkReplaceAtUsagesInvariants, getStackKind, graph, hasUsagesOtherThan, inferStamp, isAllowedUsageType, isConstant, isConstantPredicate, isDefaultConstant, isIllegalConstant, isJavaConstant, isNullConstant, isSerializableConstant, recursivelyDataFlowEqualsUpTo, setStamp, stamp, updateStamp, updateUsagesInterfaceapplyInputs, applySuccessors, assertFalse, assertTrue, cfgPredecessors, cfgSuccessors, clearInputs, clearNodeSourcePosition, clearSuccessors, copyWithInputs, copyWithInputs, dataFlowEquals, dynamicNodeSizeEstimate, estimatedNodeCycles, estimatedNodeSize, fail, formatTo, getCreationPosition, getDebug, getDebugProperties, getDebugProperties, getInsertionPosition, getNodeClass, getNodeSourcePosition, getOptions, getUsageCount, hasExactlyOneUsage, hashCode, hasMoreThanOneUsage, hasNoUsages, hasOnlyUsagesOfType, hasUsages, hasUsagesOfType, inputPositions, inputs, isAlive, isDeleted, isUnregistered, markDeleted, maybeNotifyZeroUsages, modCount, predecessor, pushInputs, removeUsage, replaceAllInputs, replaceAndDelete, replaceAtAllUsages, replaceAtMatchingUsages, replaceAtPredecessor, replaceAtUsages, replaceAtUsages, replaceAtUsages, replaceAtUsages, replaceAtUsages, replaceAtUsagesAndDelete, replaceAtUsagesAndDelete, replaceFirstInput, replaceFirstSuccessor, safeDelete, setCreationPosition, setInsertionPosition, setNodeSourcePosition, singleUsage, successorPositions, successors, toString, toString, updateNodeSourcePosition, updatePredecessor, updateUsages, usages, valueEquals, verify, verifyEdges, verifyInputs, verifySourcePosition, withNodeSourcePositionpublic static final NodeClass<VirtualObjectNode> TYPE
protected boolean hasIdentity
protected VirtualObjectNode(NodeClass<? extends VirtualObjectNode> c, ResolvedJavaType type, boolean hasIdentity)
public final int getObjectId()
public final void resetObjectId()
public final void setObjectId(int objectId)
protected void afterClone(Node other)
afterClone in class Nodepublic abstract ResolvedJavaType type()
VirtualObjectNode. In case of arrays, this is
the array type (and not the component type).public abstract int entryCount()
public abstract String entryName(int i)
public abstract int entryIndexForOffset(MetaAccessProvider metaAccess,
long constantOffset,
JavaKind expectedEntryKind)
constantOffset - offset, where the value is placed.expectedEntryKind - Specifies which type is expected at this offset (Is important whenpublic abstract JavaKind entryKind(MetaAccessExtensionProvider metaAccessExtensionProvider, int index)
JavaKind of the entry at the given index.public abstract VirtualObjectNode duplicate()
public boolean hasIdentity()
public void setIdentity(boolean identity)
public abstract ValueNode getMaterializedRepresentation(FixedNode fixed, ValueNode[] entries, LockState locks)
AllocatedObjectNode then this node will be attached to a CommitAllocationNode
, otherwise the node will just be added to the graph.public void generate(NodeLIRBuilderTool gen)
generate in interface LIRLowerablepublic boolean canVirtualizeLargeByteArrayUnsafeRead(ValueNode entry, int index, JavaKind accessKind, VirtualizerTool tool)
public boolean isVirtualByteArrayAccess(MetaAccessExtensionProvider metaAccessExtensionProvider, JavaKind accessKind)
public boolean isVirtualByteArray(MetaAccessExtensionProvider metaAccessExtensionProvider)