public final class ArrayCopyWithDelayedLoweringNode extends BasicArrayCopyNode implements Simplifiable, LoopExpandableNode
BasicArrayCopyNode that delays lowering.
The ArrayCopyWithDelayedLoweringNode.snippet which will be used for lowering is already known up front, but applying it
is delayed to avoid unfavorable interaction with other phases (floating guards, frame state
assignment, etc.).ArrayCopyNode,
ArrayCopySnippetsNode.ConstantNodeParameter, Node.EdgeVisitor, Node.IndirectCanonicalization, Node.InjectedNodeParameter, Node.Input, Node.NodeInsertionStackTrace, Node.NodeIntrinsic, Node.NodeIntrinsicFactory, Node.OptionalInput, Node.Successor, Node.ValueNumberableMemoryKill.NoLocationDeoptimizingNode.DeoptAfter, DeoptimizingNode.DeoptBefore, DeoptimizingNode.DeoptDuring| Modifier and Type | Field and Description |
|---|---|
static NodeClass<ArrayCopyWithDelayedLoweringNode> |
TYPE |
bci, elementKind, lastLocationAccess, stateAfterexceptionEdge, nextEMPTY_ARRAY, stampNODE_LIST, NOT_ITERABLE, TRACK_CREATION_POSITION, WithAllEdges, WithNoEdges, WithOnlyInputEdges, WithOnlySucessorEdgesMULTI_KILL_NO_LOCATION, NO_LOCATION| Constructor and Description |
|---|
ArrayCopyWithDelayedLoweringNode(ValueNode src,
ValueNode srcPos,
ValueNode dest,
ValueNode destPos,
ValueNode length,
ArrayCopySnippets.WorkSnippetID snippet,
StructuredGraph.GuardsStage delayUntil,
JavaKind elementKind,
boolean canThrow) |
| Modifier and Type | Method and Description |
|---|---|
static void |
arraycopy(Object nonNullSrc,
int srcPos,
Object nonNullDest,
int destPos,
int length,
ArrayCopySnippets.WorkSnippetID snippet,
StructuredGraph.GuardsStage delayUntil,
JavaKind elementKind) |
static void |
arraycopyNonThrowing(Object nonNullSrc,
int srcPos,
Object nonNullDest,
int destPos,
int length,
ArrayCopySnippets.WorkSnippetID snippet,
StructuredGraph.GuardsStage delayUntil,
JavaKind elementKind) |
ArrayCopySnippets.WorkSnippetID |
getSnippet() |
boolean |
mayExpandToLoop() |
boolean |
reachedRequiredLoweringStage() |
void |
simplify(SimplifierTool tool) |
bci, canDeoptimize, checkBounds, checkEntryTypes, computeStateDuring, getDestination, getDestinationPosition, getElementKind, getKilledLocationIdentity, getLastLocationAccess, getLength, getLocationIdentity, getSource, getSourcePosition, hasSideEffect, isExact, selectComponentKind, setBci, setLastLocationAccess, setSource, setSourcePosition, setStateAfter, setStateDuring, stateAfter, stateDuring, virtualizeexceptionEdge, getPrimarySuccessor, getProfileData, getSuccessorCount, killExceptionEdge, next, probability, replaceWithNonThrowing, setExceptionEdge, setNext, setProbabilitysuccessorProbabilitiesasFixedNode, verifyasConstant, 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, isSingleMemoryKillstatesasFixedNodeasNodepublic static final NodeClass<ArrayCopyWithDelayedLoweringNode> TYPE
public ArrayCopyWithDelayedLoweringNode(ValueNode src, ValueNode srcPos, ValueNode dest, ValueNode destPos, ValueNode length, ArrayCopySnippets.WorkSnippetID snippet, StructuredGraph.GuardsStage delayUntil, JavaKind elementKind, boolean canThrow)
public static void arraycopy(Object nonNullSrc, int srcPos, Object nonNullDest, int destPos, int length, ArrayCopySnippets.WorkSnippetID snippet, StructuredGraph.GuardsStage delayUntil, JavaKind elementKind)
public static void arraycopyNonThrowing(Object nonNullSrc, int srcPos, Object nonNullDest, int destPos, int length, ArrayCopySnippets.WorkSnippetID snippet, StructuredGraph.GuardsStage delayUntil, JavaKind elementKind)
public ArrayCopySnippets.WorkSnippetID getSnippet()
public boolean reachedRequiredLoweringStage()
public void simplify(SimplifierTool tool)
simplify in interface Simplifiablepublic boolean mayExpandToLoop()
mayExpandToLoop in interface LoopExpandableNodetrue if the current node can be expanded to a loop later, false
otherwise