public class ArrayCopySnippets extends Object implements Snippets
Modifier and Type | Class and Description |
---|---|
static class |
ArrayCopySnippets.Templates |
Constructor and Description |
---|
ArrayCopySnippets() |
Modifier and Type | Method and Description |
---|---|
static void |
arraycopyExactIntrinsic(Object src,
int srcPos,
Object dest,
int destPos,
int length,
Kind elementKind,
SnippetCounter counter,
SnippetCounter copiedCounter) |
static void |
arraycopyGeneric(Object src,
int srcPos,
Object dest,
int destPos,
int length) |
static void |
arraycopyPredictedExactIntrinsic(Object src,
int srcPos,
Object dest,
int destPos,
int length,
Kind elementKind,
SnippetCounter counter,
SnippetCounter copiedCounter)
This intrinsic is useful for the case where we know something statically about one of the
inputs but not the other.
|
static void |
arraycopyPredictedObjectWork(Object nonNullSrc,
int srcPos,
Object nonNullDest,
int destPos,
int length,
KlassPointer objectArrayKlass,
SnippetCounter counter,
SnippetCounter copiedCounter) |
static void |
arraycopySlowPathIntrinsic(Object src,
int srcPos,
Object dest,
int destPos,
int length,
Kind elementKind,
SnippetTemplate.SnippetInfo slowPath,
Object slowPathArgument)
This is the basic template for the full arraycopy checks, including a check that the
underlying type is really an array type.
|
static void |
arraycopyUnrolledIntrinsic(Object src,
int srcPos,
Object dest,
int destPos,
int length,
int unrolledLength,
Kind elementKind)
Snippet for unrolled arraycopy.
|
static void |
arraycopyUnrolledWork(Object nonNullSrc,
int srcPos,
Object nonNullDest,
int destPos,
int length,
Kind elementKind) |
static void |
arraycopyZeroLengthIntrinsic(Object src,
int srcPos,
Object dest,
int destPos,
int length) |
private static int |
checkArrayType(KlassPointer hub) |
static void |
checkcastArraycopyWork(Object nonNullSrc,
int srcPos,
Object nonNullDest,
int destPos,
int length) |
private static void |
checkLimits(Object src,
int srcPos,
Object dest,
int destPos,
int length) |
(package private) static void |
createArraycopyCounter(Kind kind) |
private static LocationIdentity |
getArrayLocation(Kind kind) |
private static final SnippetCounter.Group checkCounters
private static final SnippetCounter checkSuccessCounter
private static final SnippetCounter checkAIOOBECounter
private static final SnippetCounter.Group counters
private static final SnippetCounter objectCheckcastCounter
private static final SnippetCounter objectCheckcastSameTypeCounter
private static final SnippetCounter predictedObjectArrayCopySlowPathCounter
private static final SnippetCounter predictedObjectArrayCopyFastPathCounter
private static final EnumMap<Kind,SnippetCounter> arraycopyCallCounters
private static final EnumMap<Kind,SnippetCounter> arraycopyCounters
private static final EnumMap<Kind,SnippetCounter> arraycopyCallCopiedCounters
private static final EnumMap<Kind,SnippetCounter> arraycopyCopiedCounters
private static final SnippetCounter genericPrimitiveCallCounter
private static final SnippetCounter genericObjectExactCallCounter
private static final SnippetCounter SystemArraycopyCounter
private static final SnippetCounter.Group lengthCounters
private static final SnippetCounter zeroLengthStaticCounter
private static final SnippetCounter zeroLengthDynamicCounter
private static final SnippetCounter nonZeroLengthDynamicCounter
private static final SnippetCounter.Group copiedCounters
private static final SnippetCounter nonZeroLengthDynamicCopiedCounter
private static final SnippetCounter genericPrimitiveCallCopiedCounter
private static final SnippetCounter genericObjectExactCallCopiedCounter
private static final SnippetCounter SystemArraycopyCopiedCounter
private static final SnippetCounter objectCheckcastCopiedCounter
private static final SnippetCounter objectCheckcastSameTypeCopiedCounter
private static final SnippetCounter predictedObjectArrayCopySlowPathCopiedCounter
private static final SnippetCounter predictedObjectArrayCopyFastPathCopiedCounter
public ArrayCopySnippets()
private static int checkArrayType(KlassPointer hub)
private static void checkLimits(Object src, int srcPos, Object dest, int destPos, int length)
public static void arraycopyZeroLengthIntrinsic(Object src, int srcPos, Object dest, int destPos, int length)
public static void arraycopyExactIntrinsic(Object src, int srcPos, Object dest, int destPos, int length, Kind elementKind, SnippetCounter counter, SnippetCounter copiedCounter)
public static void arraycopyPredictedExactIntrinsic(Object src, int srcPos, Object dest, int destPos, int length, Kind elementKind, SnippetCounter counter, SnippetCounter copiedCounter)
public static void arraycopyPredictedObjectWork(Object nonNullSrc, int srcPos, Object nonNullDest, int destPos, int length, KlassPointer objectArrayKlass, SnippetCounter counter, SnippetCounter copiedCounter)
public static void arraycopySlowPathIntrinsic(Object src, int srcPos, Object dest, int destPos, int length, Kind elementKind, SnippetTemplate.SnippetInfo slowPath, Object slowPathArgument)
public static void arraycopyUnrolledIntrinsic(Object src, int srcPos, Object dest, int destPos, int length, int unrolledLength, Kind elementKind)
public static void checkcastArraycopyWork(Object nonNullSrc, int srcPos, Object nonNullDest, int destPos, int length)
public static void arraycopyGeneric(Object src, int srcPos, Object dest, int destPos, int length)
private static LocationIdentity getArrayLocation(Kind kind)
public static void arraycopyUnrolledWork(Object nonNullSrc, int srcPos, Object nonNullDest, int destPos, int length, Kind elementKind)
static void createArraycopyCounter(Kind kind)