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 |
ARRAY_BASE_OFFSET |
private static long |
BUFFER_ADDRESS_OFFSET |
private static boolean |
HAS_UNSAFE_ARRAY_OPERATIONS |
private static boolean |
HAS_UNSAFE_BYTEBUFFER_OPERATIONS |
private static boolean |
HAS_UNSAFE_COPY_MEMORY |
private static java.util.logging.Logger |
logger |
private static UnsafeUtil.MemoryAccessor |
MEMORY_ACCESSOR |
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 java.lang.reflect.Field |
bufferAddressField()
Finds the address field within a direct
Buffer. |
private static int |
byteArrayBaseOffset()
Get the base offset for byte arrays, or
-1 if sun.misc.Unsafe is not available. |
(package private) static void |
copyMemory(long srcAddress,
long targetAddress,
long length) |
(package private) static void |
copyMemory(java.lang.Object src,
long srcOffset,
java.lang.Object target,
long targetOffset,
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 long |
getArrayBaseOffset() |
(package private) static boolean |
getBoolean(java.lang.Object target,
long offset) |
(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(java.lang.Object target,
long offset) |
(package private) static float |
getFloat(java.lang.Object target,
long offset) |
(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(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 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 boolean |
hasUnsafeCopyMemory() |
(package private) static long |
objectFieldOffset(java.lang.reflect.Field field) |
(package private) static void |
putBoolean(java.lang.Object target,
long offset,
boolean 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(java.lang.Object target,
long offset,
double value) |
(package private) static void |
putFloat(java.lang.Object target,
long offset,
float 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 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 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 boolean |
supportsUnsafeCopyMemory()
Indicates whether or not unsafe copyMemory(object, long, object, long, long) operations are
supported on this platform.
|
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 boolean HAS_UNSAFE_COPY_MEMORY
private static final long ARRAY_BASE_OFFSET
private static final long BUFFER_ADDRESS_OFFSET
static boolean hasUnsafeArrayOperations()
static boolean hasUnsafeCopyMemory()
static boolean hasUnsafeByteBufferOperations()
static long objectFieldOffset(java.lang.reflect.Field field)
static long getArrayBaseOffset()
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 void copyMemory(java.lang.Object src,
long srcOffset,
java.lang.Object target,
long targetOffset,
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 void copyMemory(long srcAddress,
long targetAddress,
long length)
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 supportsUnsafeCopyMemory()
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 int byteArrayBaseOffset()
-1 if sun.misc.Unsafe is not available.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.