public class ArrayCopyWithConversionsNode extends AbstractMemoryCheckpoint implements LIRLowerable, MemoryAccess, MultiMemoryKill
strideSrc and strideDst.Node.ConstantNodeParameter, Node.EdgeVisitor, Node.IndirectCanonicalization, Node.InjectedNodeParameter, Node.Input, Node.NodeInsertionStackTrace, Node.NodeIntrinsic, Node.NodeIntrinsicFactory, Node.OptionalInput, Node.Successor, Node.ValueNumberableMemoryKill.NoLocation| Modifier and Type | Field and Description |
|---|---|
protected ValueNode |
arrayDst |
protected ValueNode |
arraySrc |
protected ValueNode |
dynamicStrides
Optional argument for dispatching to any combination of strides at runtime, as described in
StrideUtil. |
static org.graalvm.word.LocationIdentity[] |
KILLED_LOCATIONS |
protected MemoryKill |
lastLocationAccess |
protected ValueNode |
length |
protected ValueNode |
offsetDst |
protected ValueNode |
offsetSrc |
static NodeClass<ArrayCopyWithConversionsNode> |
TYPE |
stateAfternextEMPTY_ARRAY, stampNODE_LIST, NOT_ITERABLE, TRACK_CREATION_POSITION, WithAllEdges, WithNoEdges, WithOnlyInputEdges, WithOnlySucessorEdgesMULTI_KILL_NO_LOCATION, NO_LOCATION| Modifier | Constructor and Description |
|---|---|
protected |
ArrayCopyWithConversionsNode(NodeClass<? extends ArrayCopyWithConversionsNode> c,
ValueNode arraySrc,
ValueNode offsetSrc,
ValueNode arrayDst,
ValueNode offsetDst,
ValueNode length,
ValueNode dynamicStrides,
JavaKind strideSrc,
JavaKind strideDst) |
|
ArrayCopyWithConversionsNode(ValueNode arraySrc,
ValueNode offsetSrc,
ValueNode arrayDst,
ValueNode offsetDst,
ValueNode length,
JavaKind strideSrc,
JavaKind strideDst)
Arraycopy operation for arbitrary source and destination arrays, with arbitrary byte offset,
with support for arbitrary compression and inflation of
8 bit,
16 bit or 32 bit array elements. |
|
ArrayCopyWithConversionsNode(ValueNode arraySrc,
ValueNode offsetSrc,
ValueNode arrayDst,
ValueNode offsetDst,
ValueNode length,
ValueNode dynamicStrides)
Variant with dynamicStride parameter, as described in
StrideUtil. |
| Modifier and Type | Method and Description |
|---|---|
static void |
arrayCopy(Object arraySrc,
long offsetSrc,
Object arrayDst,
long offsetDst,
int length,
int stride) |
static void |
arrayCopy(Object arraySrc,
long offsetSrc,
Object arrayDst,
long offsetDst,
int length,
JavaKind strideSrc,
JavaKind strideDst) |
void |
generate(NodeLIRBuilderTool gen) |
protected void |
generateArrayCopy(NodeLIRBuilderTool gen) |
int |
getDirectStubCallIndex() |
org.graalvm.word.LocationIdentity[] |
getKilledLocationIdentities()
TruffleStrings is using the same stub generated by this node to write to
byte[]
arrays and native buffers. |
MemoryKill |
getLastLocationAccess() |
org.graalvm.word.LocationIdentity |
getLocationIdentity()
TruffleStrings is using the same stub generated by this node to read from
byte[]/char[]/int[] arrays and native buffers, so we have to use
LocationIdentity.any() here. |
void |
setLastLocationAccess(MemoryKill lla) |
hasSideEffect, setStateAfter, stateAfter, verifyasFixedWithNextNode, next, setNextasFixedNodeasConstant, asJavaConstant, asNode, asSerializableConstant, checkReplaceAtUsagesInvariants, getStackKind, graph, hasUsagesOtherThan, inferStamp, isAllowedUsageType, isConstant, isConstantPredicate, isDefaultConstant, isIllegalConstant, isJavaConstant, isNullConstant, isSerializableConstant, recursivelyDataFlowEqualsUpTo, setStamp, stamp, updateStamp, updateUsagesInterfaceafterClone, applyInputs, 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, verifyEdges, verifyInputs, verifySourcePosition, withNodeSourcePositionclone, equals, getClass, notify, notifyAll, wait, wait, waitasMultiMemoryKill, asSingleMemoryKill, isMemoryKill, isMultiMemoryKill, isSingleMemoryKillasNodestatesasFixedNodepublic static final NodeClass<ArrayCopyWithConversionsNode> TYPE
public static final org.graalvm.word.LocationIdentity[] KILLED_LOCATIONS
protected ValueNode arraySrc
protected ValueNode offsetSrc
protected ValueNode arrayDst
protected ValueNode offsetDst
protected ValueNode length
protected ValueNode dynamicStrides
StrideUtil.protected MemoryKill lastLocationAccess
public ArrayCopyWithConversionsNode(ValueNode arraySrc, ValueNode offsetSrc, ValueNode arrayDst, ValueNode offsetDst, ValueNode length, JavaKind strideSrc, JavaKind strideDst)
8 bit,
16 bit or 32 bit array elements.strideSrc - source stride. May be 8 bit, 16
bit or 32 bit.strideDst - target stride. May be 8 bit, 16
bit or 32 bit.arraySrc - source array.offsetSrc - offset to be added to arraySrc, in bytes. Must include array base offset!arrayDst - destination array.offsetDst - offset to be added to arrayDst, in bytes. Must include array base offset!length - length of the region to copy, scaled to strideDst.public ArrayCopyWithConversionsNode(ValueNode arraySrc, ValueNode offsetSrc, ValueNode arrayDst, ValueNode offsetDst, ValueNode length, ValueNode dynamicStrides)
StrideUtil.public static void arrayCopy(Object arraySrc, long offsetSrc, Object arrayDst, long offsetDst, int length, JavaKind strideSrc, JavaKind strideDst)
public static void arrayCopy(Object arraySrc, long offsetSrc, Object arrayDst, long offsetDst, int length, int stride)
public int getDirectStubCallIndex()
public void generate(NodeLIRBuilderTool gen)
generate in interface LIRLowerableprotected void generateArrayCopy(NodeLIRBuilderTool gen)
public org.graalvm.word.LocationIdentity getLocationIdentity()
byte[]/char[]/int[] arrays and native buffers, so we have to use
LocationIdentity.any() here.getLocationIdentity in interface MemoryAccesspublic org.graalvm.word.LocationIdentity[] getKilledLocationIdentities()
byte[]
arrays and native buffers.getKilledLocationIdentities in interface MultiMemoryKillpublic MemoryKill getLastLocationAccess()
getLastLocationAccess in interface MemoryAccesspublic void setLastLocationAccess(MemoryKill lla)
setLastLocationAccess in interface MemoryAccesslla - the MemoryKill that represents the last kill of the
LocationIdentity returned by MemoryAccess.getLocationIdentity()