public class UnsafeArrayCopySnippets extends Object implements Snippets
ArrayCopySnippets
, these Snippets do not perform store checks.Modifier and Type | Class and Description |
---|---|
static class |
UnsafeArrayCopySnippets.Templates |
Modifier and Type | Field and Description |
---|---|
private static boolean |
supportsUnalignedMemoryAccess |
private static Kind |
VECTOR_KIND |
private static long |
VECTOR_SIZE |
Constructor and Description |
---|
UnsafeArrayCopySnippets() |
Modifier and Type | Method and Description |
---|---|
static void |
arraycopyBoolean(boolean[] src,
int srcPos,
boolean[] dest,
int destPos,
int length) |
static void |
arraycopyByte(byte[] src,
int srcPos,
byte[] dest,
int destPos,
int length) |
static void |
arraycopyChar(char[] src,
int srcPos,
char[] dest,
int destPos,
int length) |
static void |
arraycopyDouble(double[] src,
int srcPos,
double[] dest,
int destPos,
int length) |
static void |
arraycopyFloat(float[] src,
int srcPos,
float[] dest,
int destPos,
int length) |
static void |
arraycopyInt(int[] src,
int srcPos,
int[] dest,
int destPos,
int length) |
static void |
arraycopyLong(long[] src,
int srcPos,
long[] dest,
int destPos,
int length) |
static void |
arraycopyObject(Object[] src,
int srcPos,
Object[] dest,
int destPos,
int length)
For this kind, Object, we want to avoid write barriers between writes, but instead have them
at the end of the snippet.
|
static void |
arraycopyPrimitive(Object src,
int srcPos,
Object dest,
int destPos,
int length,
int layoutHelper) |
static void |
arraycopyShort(short[] src,
int srcPos,
short[] dest,
int destPos,
int length) |
private static LocationIdentity |
getArrayLocation(Kind kind) |
private static void |
vectorizedCopy(Object src,
int srcPos,
Object dest,
int destPos,
int length,
Kind baseKind,
LocationIdentity locationIdentity) |
private static final boolean supportsUnalignedMemoryAccess
private static final Kind VECTOR_KIND
private static final long VECTOR_SIZE
public UnsafeArrayCopySnippets()
private static void vectorizedCopy(Object src, int srcPos, Object dest, int destPos, int length, Kind baseKind, LocationIdentity locationIdentity)
private static LocationIdentity getArrayLocation(Kind kind)
public static void arraycopyByte(byte[] src, int srcPos, byte[] dest, int destPos, int length)
public static void arraycopyBoolean(boolean[] src, int srcPos, boolean[] dest, int destPos, int length)
public static void arraycopyChar(char[] src, int srcPos, char[] dest, int destPos, int length)
public static void arraycopyShort(short[] src, int srcPos, short[] dest, int destPos, int length)
public static void arraycopyInt(int[] src, int srcPos, int[] dest, int destPos, int length)
public static void arraycopyFloat(float[] src, int srcPos, float[] dest, int destPos, int length)
public static void arraycopyLong(long[] src, int srcPos, long[] dest, int destPos, int length)
public static void arraycopyDouble(double[] src, int srcPos, double[] dest, int destPos, int length)
public static void arraycopyObject(Object[] src, int srcPos, Object[] dest, int destPos, int length)
DirectObjectStoreNode
, and rely on
WriteBarrierAdditionPhase
to put write barriers after the UnsafeArrayCopyNode
with kind Object.public static void arraycopyPrimitive(Object src, int srcPos, Object dest, int destPos, int length, int layoutHelper)