final class UnsafeUtil
extends java.lang.Object
Modifier and Type | Class and Description |
---|---|
private static class |
UnsafeUtil.JvmMemoryAccessor |
private static class |
UnsafeUtil.MemoryAccessor |
Modifier and Type | Field and Description |
---|---|
private static long |
BOOLEAN_ARRAY_BASE_OFFSET |
private static long |
BOOLEAN_ARRAY_INDEX_SCALE |
private static long |
BUFFER_ADDRESS_OFFSET |
private static long |
BYTE_ARRAY_BASE_OFFSET |
private static long |
DOUBLE_ARRAY_BASE_OFFSET |
private static long |
DOUBLE_ARRAY_INDEX_SCALE |
private static long |
FLOAT_ARRAY_BASE_OFFSET |
private static long |
FLOAT_ARRAY_INDEX_SCALE |
private static boolean |
HAS_UNSAFE_ARRAY_OPERATIONS |
private static boolean |
HAS_UNSAFE_BYTEBUFFER_OPERATIONS |
private static long |
INT_ARRAY_BASE_OFFSET |
private static long |
INT_ARRAY_INDEX_SCALE |
private static java.util.logging.Logger |
logger |
private static long |
LONG_ARRAY_BASE_OFFSET |
private static long |
LONG_ARRAY_INDEX_SCALE |
private static UnsafeUtil.MemoryAccessor |
MEMORY_ACCESSOR |
private static long |
OBJECT_ARRAY_BASE_OFFSET |
private static long |
OBJECT_ARRAY_INDEX_SCALE |
private static sun.misc.Unsafe |
UNSAFE |
Modifier | Constructor and Description |
---|---|
private |
UnsafeUtil() |
Modifier and Type | Method and Description |
---|---|
(package private) static long |
addressOffset(java.nio.ByteBuffer buffer)
Gets the offset of the
address field of the given direct ByteBuffer . |
private static int |
arrayBaseOffset(java.lang.Class<?> clazz) |
private static int |
arrayIndexScale(java.lang.Class<?> clazz) |
private static java.lang.reflect.Field |
bufferAddressField()
Finds the address field within a direct
Buffer . |
(package private) static void |
copyMemory(byte[] src,
long srcIndex,
byte[] target,
long targetIndex,
long length) |
(package private) static void |
copyMemory(byte[] src,
long srcIndex,
long targetOffset,
long length) |
(package private) static void |
copyMemory(long srcOffset,
byte[] target,
long targetIndex,
long length) |
private static java.lang.reflect.Field |
field(java.lang.Class<?> clazz,
java.lang.String fieldName)
Gets the field with the given name within the class, or
null if not found. |
private static long |
fieldOffset(java.lang.reflect.Field field)
Returns the offset of the provided field, or
-1 if sun.misc.Unsafe is not
available. |
(package private) static boolean |
getBoolean(boolean[] target,
long index) |
(package private) static boolean |
getBoolean(java.lang.Object target,
long offset) |
(package private) static byte |
getByte(byte[] target,
long index) |
(package private) static byte |
getByte(long address) |
(package private) static byte |
getByte(java.lang.Object target,
long offset) |
private static <T> java.lang.Class<T> |
getClassForName(java.lang.String name) |
(package private) static double |
getDouble(double[] target,
long index) |
(package private) static double |
getDouble(java.lang.Object target,
long offset) |
(package private) static float |
getFloat(float[] target,
long index) |
(package private) static float |
getFloat(java.lang.Object target,
long offset) |
(package private) static int |
getInt(int[] target,
long index) |
(package private) static int |
getInt(long address) |
(package private) static int |
getInt(java.lang.Object target,
long offset) |
(package private) static long |
getLong(long address) |
(package private) static long |
getLong(long[] target,
long index) |
(package private) static long |
getLong(java.lang.Object target,
long offset) |
private static UnsafeUtil.MemoryAccessor |
getMemoryAccessor()
Get a
UnsafeUtil.MemoryAccessor appropriate for the platform, or null if not supported. |
(package private) static java.lang.Object |
getObject(java.lang.Object[] target,
long index) |
(package private) static java.lang.Object |
getObject(java.lang.Object target,
long offset) |
(package private) static java.lang.Object |
getStaticObject(java.lang.reflect.Field field) |
private static sun.misc.Unsafe |
getUnsafe()
Gets the
sun.misc.Unsafe instance, or null if not available on this platform. |
(package private) static boolean |
hasUnsafeArrayOperations() |
(package private) static boolean |
hasUnsafeByteBufferOperations() |
(package private) static long |
objectFieldOffset(java.lang.reflect.Field field) |
(package private) static void |
putBoolean(boolean[] target,
long index,
boolean value) |
(package private) static void |
putBoolean(java.lang.Object target,
long offset,
boolean value) |
(package private) static void |
putByte(byte[] target,
long index,
byte value) |
(package private) static void |
putByte(long address,
byte value) |
(package private) static void |
putByte(java.lang.Object target,
long offset,
byte value) |
(package private) static void |
putDouble(double[] target,
long index,
double value) |
(package private) static void |
putDouble(java.lang.Object target,
long offset,
double value) |
(package private) static void |
putFloat(float[] target,
long index,
float value) |
(package private) static void |
putFloat(java.lang.Object target,
long offset,
float value) |
(package private) static void |
putInt(int[] target,
long index,
int value) |
(package private) static void |
putInt(long address,
int value) |
(package private) static void |
putInt(java.lang.Object target,
long offset,
int value) |
(package private) static void |
putLong(long[] target,
long index,
long value) |
(package private) static void |
putLong(long address,
long value) |
(package private) static void |
putLong(java.lang.Object target,
long offset,
long value) |
(package private) static void |
putObject(java.lang.Object[] target,
long index,
java.lang.Object value) |
(package private) static void |
putObject(java.lang.Object target,
long offset,
java.lang.Object value) |
private static boolean |
supportsUnsafeArrayOperations()
Indicates whether or not unsafe array operations are supported on this platform.
|
private static boolean |
supportsUnsafeByteBufferOperations() |
private static final java.util.logging.Logger logger
private static final sun.misc.Unsafe UNSAFE
private static final UnsafeUtil.MemoryAccessor MEMORY_ACCESSOR
private static final boolean HAS_UNSAFE_BYTEBUFFER_OPERATIONS
private static final boolean HAS_UNSAFE_ARRAY_OPERATIONS
private static final long BYTE_ARRAY_BASE_OFFSET
private static final long BOOLEAN_ARRAY_BASE_OFFSET
private static final long BOOLEAN_ARRAY_INDEX_SCALE
private static final long INT_ARRAY_BASE_OFFSET
private static final long INT_ARRAY_INDEX_SCALE
private static final long LONG_ARRAY_BASE_OFFSET
private static final long LONG_ARRAY_INDEX_SCALE
private static final long FLOAT_ARRAY_BASE_OFFSET
private static final long FLOAT_ARRAY_INDEX_SCALE
private static final long DOUBLE_ARRAY_BASE_OFFSET
private static final long DOUBLE_ARRAY_INDEX_SCALE
private static final long OBJECT_ARRAY_BASE_OFFSET
private static final long OBJECT_ARRAY_INDEX_SCALE
private static final long BUFFER_ADDRESS_OFFSET
static boolean hasUnsafeArrayOperations()
static boolean hasUnsafeByteBufferOperations()
static long objectFieldOffset(java.lang.reflect.Field field)
private static int arrayBaseOffset(java.lang.Class<?> clazz)
private static int arrayIndexScale(java.lang.Class<?> clazz)
static byte getByte(java.lang.Object target, long offset)
static void putByte(java.lang.Object target, long offset, byte value)
static int getInt(java.lang.Object target, long offset)
static void putInt(java.lang.Object target, long offset, int value)
static long getLong(java.lang.Object target, long offset)
static void putLong(java.lang.Object target, long offset, long value)
static boolean getBoolean(java.lang.Object target, long offset)
static void putBoolean(java.lang.Object target, long offset, boolean value)
static float getFloat(java.lang.Object target, long offset)
static void putFloat(java.lang.Object target, long offset, float value)
static double getDouble(java.lang.Object target, long offset)
static void putDouble(java.lang.Object target, long offset, double value)
static java.lang.Object getObject(java.lang.Object target, long offset)
static void putObject(java.lang.Object target, long offset, java.lang.Object value)
static byte getByte(byte[] target, long index)
static void putByte(byte[] target, long index, byte value)
static int getInt(int[] target, long index)
static void putInt(int[] target, long index, int value)
static long getLong(long[] target, long index)
static void putLong(long[] target, long index, long value)
static boolean getBoolean(boolean[] target, long index)
static void putBoolean(boolean[] target, long index, boolean value)
static float getFloat(float[] target, long index)
static void putFloat(float[] target, long index, float value)
static double getDouble(double[] target, long index)
static void putDouble(double[] target, long index, double value)
static java.lang.Object getObject(java.lang.Object[] target, long index)
static void putObject(java.lang.Object[] target, long index, java.lang.Object value)
static void copyMemory(byte[] src, long srcIndex, long targetOffset, long length)
static void copyMemory(long srcOffset, byte[] target, long targetIndex, long length)
static void copyMemory(byte[] src, long srcIndex, byte[] target, long targetIndex, long length)
static byte getByte(long address)
static void putByte(long address, byte value)
static int getInt(long address)
static void putInt(long address, int value)
static long getLong(long address)
static void putLong(long address, long value)
static long addressOffset(java.nio.ByteBuffer buffer)
address
field of the given direct ByteBuffer
.static java.lang.Object getStaticObject(java.lang.reflect.Field field)
private static sun.misc.Unsafe getUnsafe()
sun.misc.Unsafe
instance, or null
if not available on this platform.private static UnsafeUtil.MemoryAccessor getMemoryAccessor()
UnsafeUtil.MemoryAccessor
appropriate for the platform, or null if not supported.private static boolean supportsUnsafeArrayOperations()
private static boolean supportsUnsafeByteBufferOperations()
private static <T> java.lang.Class<T> getClassForName(java.lang.String name)
private static java.lang.reflect.Field bufferAddressField()
Buffer
.private static long fieldOffset(java.lang.reflect.Field field)
-1
if sun.misc.Unsafe
is not
available.private static java.lang.reflect.Field field(java.lang.Class<?> clazz, java.lang.String fieldName)
null
if not found. If found,
the field is made accessible.