Top Description Inners Fields Constructors Methods
com.google.protobuf

pack-priv final Class UnsafeUtil

extends Object
Class Inheritance
Imports
java.lang.reflect.Field, java.nio.Buffer, .ByteBuffer, .ByteOrder, java.security.AccessController, .PrivilegedExceptionAction, java.util.logging.Level, .Logger

Utility class for working with unsafe operations.

Nested and Inner Type Summary

Modifier and TypeClass and Description
private static class
private abstract static class

Field Summary

Modifier and TypeField and Description
private static final long
private static final long
private static final long
private static final long
private static final long
private static final long
private static final long
private static final long
private static final boolean
private static final boolean
private static final long
private static final long
private static final Logger
private static final long
private static final long
private static final UnsafeUtil.MemoryAccessor
private static final long
private static final long
private static final sun.misc.Unsafe

Constructor Summary

AccessConstructor and Description
private

Method Summary

Modifier and TypeMethod and Description
pack-priv static long
addressOffset(ByteBuffer buffer)

Gets the offset of the address field of the given direct ByteBuffer.

pack-priv static <T> T
private static int
private static int
private static Field
bufferAddressField()

Finds the address field within a direct Buffer.

pack-priv static void
copyMemory(byte[] src, long srcIndex, long targetOffset, long length)

pack-priv static void
copyMemory(long srcOffset, byte[] target, long targetIndex, long length)

pack-priv static void
copyMemory(byte[] src, long srcIndex, byte[] target, long targetIndex, long length)

private static Field
field(Class<?> clazz, String fieldName)

Gets the field with the given name within the class, or null if not found.

private static long
fieldOffset(Field field)

Returns the offset of the provided field, or -1 if sun.misc.Unsafe is not available.

pack-priv static boolean
getBoolean(Object target, long offset)

pack-priv static boolean
getBoolean(boolean[] target, long index)

pack-priv static byte
getByte(Object target, long offset)

pack-priv static byte
getByte(byte[] target, long index)

pack-priv static byte
getByte(long address)

pack-priv static double
getDouble(Object target, long offset)

pack-priv static double
getDouble(double[] target, long index)

pack-priv static float
getFloat(Object target, long offset)

pack-priv static float
getFloat(float[] target, long index)

pack-priv static int
getInt(Object target, long offset)

pack-priv static int
getInt(int[] target, long index)

pack-priv static int
getInt(long address)

pack-priv static long
getLong(Object target, long offset)

pack-priv static long
getLong(long[] target, long index)

pack-priv static long
getLong(long address)

private static UnsafeUtil.MemoryAccessor
getMemoryAccessor()

Get a MemoryAccessor appropriate for the platform, or null if not supported.

pack-priv static Object
getObject(Object target, long offset)

pack-priv static Object
getObject(Object[] target, long index)

pack-priv static Object
pack-priv static sun.misc.Unsafe
getUnsafe()

Gets the sun.misc.Unsafe instance, or null if not available on this platform.

pack-priv static boolean
pack-priv static boolean
pack-priv static long
pack-priv static void
putBoolean(Object target, long offset, boolean value)

pack-priv static void
putBoolean(boolean[] target, long index, boolean value)

pack-priv static void
putByte(Object target, long offset, byte value)

pack-priv static void
putByte(byte[] target, long index, byte value)

pack-priv static void
putByte(long address, byte value)

pack-priv static void
putDouble(Object target, long offset, double value)

pack-priv static void
putDouble(double[] target, long index, double value)

pack-priv static void
putFloat(Object target, long offset, float value)

pack-priv static void
putFloat(float[] target, long index, float value)

pack-priv static void
putInt(Object target, long offset, int value)

pack-priv static void
putInt(int[] target, long index, int value)

pack-priv static void
putInt(long address, int value)

pack-priv static void
putLong(Object target, long offset, long value)

pack-priv static void
putLong(long[] target, long index, long value)

pack-priv static void
putLong(long address, long value)

pack-priv static void
putObject(Object target, long offset, Object value)

pack-priv static void
putObject(Object[] target, long index, Object value)

private static boolean
supportsUnsafeArrayOperations()

Indicates whether or not unsafe array operations are supported on this platform.

private static boolean
Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait

Field Detail

BOOLEAN_ARRAY_BASE_OFFSETback to summary
private static final long BOOLEAN_ARRAY_BASE_OFFSET
BOOLEAN_ARRAY_INDEX_SCALEback to summary
private static final long BOOLEAN_ARRAY_INDEX_SCALE
BUFFER_ADDRESS_OFFSETback to summary
private static final long BUFFER_ADDRESS_OFFSET
BYTE_ARRAY_BASE_OFFSETback to summary
private static final long BYTE_ARRAY_BASE_OFFSET
DOUBLE_ARRAY_BASE_OFFSETback to summary
private static final long DOUBLE_ARRAY_BASE_OFFSET
DOUBLE_ARRAY_INDEX_SCALEback to summary
private static final long DOUBLE_ARRAY_INDEX_SCALE
FLOAT_ARRAY_BASE_OFFSETback to summary
private static final long FLOAT_ARRAY_BASE_OFFSET
FLOAT_ARRAY_INDEX_SCALEback to summary
private static final long FLOAT_ARRAY_INDEX_SCALE
HAS_UNSAFE_ARRAY_OPERATIONSback to summary
private static final boolean HAS_UNSAFE_ARRAY_OPERATIONS
HAS_UNSAFE_BYTEBUFFER_OPERATIONSback to summary
private static final boolean HAS_UNSAFE_BYTEBUFFER_OPERATIONS
INT_ARRAY_BASE_OFFSETback to summary
private static final long INT_ARRAY_BASE_OFFSET
INT_ARRAY_INDEX_SCALEback to summary
private static final long INT_ARRAY_INDEX_SCALE
loggerback to summary
private static final Logger logger
LONG_ARRAY_BASE_OFFSETback to summary
private static final long LONG_ARRAY_BASE_OFFSET
LONG_ARRAY_INDEX_SCALEback to summary
private static final long LONG_ARRAY_INDEX_SCALE
MEMORY_ACCESSORback to summary
private static final UnsafeUtil.MemoryAccessor MEMORY_ACCESSOR
OBJECT_ARRAY_BASE_OFFSETback to summary
private static final long OBJECT_ARRAY_BASE_OFFSET
OBJECT_ARRAY_INDEX_SCALEback to summary
private static final long OBJECT_ARRAY_INDEX_SCALE
UNSAFEback to summary
private static final sun.misc.Unsafe UNSAFE

Constructor Detail

UnsafeUtilback to summary
private UnsafeUtil()

Method Detail

addressOffsetback to summary
pack-priv static long addressOffset(ByteBuffer buffer)

Gets the offset of the address field of the given direct ByteBuffer.

allocateInstanceback to summary
pack-priv static <T> T allocateInstance(Class<T> clazz)
Annotations
@SuppressWarnings:unchecked
arrayBaseOffsetback to summary
private static int arrayBaseOffset(Class<?> clazz)
arrayIndexScaleback to summary
private static int arrayIndexScale(Class<?> clazz)
bufferAddressFieldback to summary
private static Field bufferAddressField()

Finds the address field within a direct Buffer.

copyMemoryback to summary
pack-priv static void copyMemory(byte[] src, long srcIndex, long targetOffset, long length)
copyMemoryback to summary
pack-priv static void copyMemory(long srcOffset, byte[] target, long targetIndex, long length)
copyMemoryback to summary
pack-priv static void copyMemory(byte[] src, long srcIndex, byte[] target, long targetIndex, long length)
fieldback to summary
private static Field field(Class<?> clazz, String fieldName)

Gets the field with the given name within the class, or null if not found.

fieldOffsetback to summary
private static long fieldOffset(Field field)

Returns the offset of the provided field, or -1 if sun.misc.Unsafe is not available.

getBooleanback to summary
pack-priv static boolean getBoolean(Object target, long offset)
getBooleanback to summary
pack-priv static boolean getBoolean(boolean[] target, long index)
getByteback to summary
pack-priv static byte getByte(Object target, long offset)
getByteback to summary
pack-priv static byte getByte(byte[] target, long index)
getByteback to summary
pack-priv static byte getByte(long address)
getDoubleback to summary
pack-priv static double getDouble(Object target, long offset)
getDoubleback to summary
pack-priv static double getDouble(double[] target, long index)
getFloatback to summary
pack-priv static float getFloat(Object target, long offset)
getFloatback to summary
pack-priv static float getFloat(float[] target, long index)
getIntback to summary
pack-priv static int getInt(Object target, long offset)
getIntback to summary
pack-priv static int getInt(int[] target, long index)
getIntback to summary
pack-priv static int getInt(long address)
getLongback to summary
pack-priv static long getLong(Object target, long offset)
getLongback to summary
pack-priv static long getLong(long[] target, long index)
getLongback to summary
pack-priv static long getLong(long address)
getMemoryAccessorback to summary
private static UnsafeUtil.MemoryAccessor getMemoryAccessor()

Get a MemoryAccessor appropriate for the platform, or null if not supported.

getObjectback to summary
pack-priv static Object getObject(Object target, long offset)
getObjectback to summary
pack-priv static Object getObject(Object[] target, long index)
getStaticObjectback to summary
pack-priv static Object getStaticObject(Field field)
getUnsafeback to summary
pack-priv static sun.misc.Unsafe getUnsafe()

Gets the sun.misc.Unsafe instance, or null if not available on this platform.

hasUnsafeArrayOperationsback to summary
pack-priv static boolean hasUnsafeArrayOperations()
hasUnsafeByteBufferOperationsback to summary
pack-priv static boolean hasUnsafeByteBufferOperations()
objectFieldOffsetback to summary
pack-priv static long objectFieldOffset(Field field)
putBooleanback to summary
pack-priv static void putBoolean(Object target, long offset, boolean value)
putBooleanback to summary
pack-priv static void putBoolean(boolean[] target, long index, boolean value)
putByteback to summary
pack-priv static void putByte(Object target, long offset, byte value)
putByteback to summary
pack-priv static void putByte(byte[] target, long index, byte value)
putByteback to summary
pack-priv static void putByte(long address, byte value)
putDoubleback to summary
pack-priv static void putDouble(Object target, long offset, double value)
putDoubleback to summary
pack-priv static void putDouble(double[] target, long index, double value)
putFloatback to summary
pack-priv static void putFloat(Object target, long offset, float value)
putFloatback to summary
pack-priv static void putFloat(float[] target, long index, float value)
putIntback to summary
pack-priv static void putInt(Object target, long offset, int value)
putIntback to summary
pack-priv static void putInt(int[] target, long index, int value)
putIntback to summary
pack-priv static void putInt(long address, int value)
putLongback to summary
pack-priv static void putLong(Object target, long offset, long value)
putLongback to summary
pack-priv static void putLong(long[] target, long index, long value)
putLongback to summary
pack-priv static void putLong(long address, long value)
putObjectback to summary
pack-priv static void putObject(Object target, long offset, Object value)
putObjectback to summary
pack-priv static void putObject(Object[] target, long index, Object value)
supportsUnsafeArrayOperationsback to summary
private static boolean supportsUnsafeArrayOperations()

Indicates whether or not unsafe array operations are supported on this platform.

supportsUnsafeByteBufferOperationsback to summary
private static boolean supportsUnsafeByteBufferOperations()
com.google.protobuf back to summary

private final Class UnsafeUtil.JvmMemoryAccessor

extends MemoryAccessor
Class Inheritance

Field Summary

Inherited from com.google.protobuf.UnsafeUtil.MemoryAccessor:
unsafe

Constructor Summary

AccessConstructor and Description
pack-priv
JvmMemoryAccessor(sun.misc.Unsafe unsafe)

Method Summary

Modifier and TypeMethod and Description
public void
copyMemory(long srcOffset, byte[] target, long targetIndex, long length)

Implements abstract com.google.protobuf.UnsafeUtil.MemoryAccessor.copyMemory.

public void
copyMemory(byte[] src, long srcIndex, long targetOffset, long length)

Implements abstract com.google.protobuf.UnsafeUtil.MemoryAccessor.copyMemory.

public boolean
public byte
public byte
getByte(Object target, long offset)

Implements abstract com.google.protobuf.UnsafeUtil.MemoryAccessor.getByte.

public double
public float
public int
public long
public Object
public void
putBoolean(Object target, long offset, boolean value)

Implements abstract com.google.protobuf.UnsafeUtil.MemoryAccessor.putBoolean.

public void
putByte(long address, byte value)

Implements abstract com.google.protobuf.UnsafeUtil.MemoryAccessor.putByte.

public void
putByte(Object target, long offset, byte value)

Implements abstract com.google.protobuf.UnsafeUtil.MemoryAccessor.putByte.

public void
putDouble(Object target, long offset, double value)

Implements abstract com.google.protobuf.UnsafeUtil.MemoryAccessor.putDouble.

public void
putFloat(Object target, long offset, float value)

Implements abstract com.google.protobuf.UnsafeUtil.MemoryAccessor.putFloat.

public void
putInt(long address, int value)

Implements abstract com.google.protobuf.UnsafeUtil.MemoryAccessor.putInt.

public void
putLong(long address, long value)

Implements abstract com.google.protobuf.UnsafeUtil.MemoryAccessor.putLong.

Inherited from com.google.protobuf.UnsafeUtil.MemoryAccessor:
arrayBaseOffsetarrayIndexScalegetIntgetLonggetObjectobjectFieldOffsetputIntputLongputObject

Constructor Detail

JvmMemoryAccessorback to summary
pack-priv JvmMemoryAccessor(sun.misc.Unsafe unsafe)

Method Detail

copyMemoryback to summary
public void copyMemory(long srcOffset, byte[] target, long targetIndex, long length)

Implements abstract com.google.protobuf.UnsafeUtil.MemoryAccessor.copyMemory.

Annotations
@Override
copyMemoryback to summary
public void copyMemory(byte[] src, long srcIndex, long targetOffset, long length)

Implements abstract com.google.protobuf.UnsafeUtil.MemoryAccessor.copyMemory.

Annotations
@Override
getBooleanback to summary
public boolean getBoolean(Object target, long offset)

Implements abstract com.google.protobuf.UnsafeUtil.MemoryAccessor.getBoolean.

Annotations
@Override
getByteback to summary
public byte getByte(long address)

Implements abstract com.google.protobuf.UnsafeUtil.MemoryAccessor.getByte.

Annotations
@Override
getByteback to summary
public byte getByte(Object target, long offset)

Implements abstract com.google.protobuf.UnsafeUtil.MemoryAccessor.getByte.

Annotations
@Override
getDoubleback to summary
public double getDouble(Object target, long offset)

Implements abstract com.google.protobuf.UnsafeUtil.MemoryAccessor.getDouble.

Annotations
@Override
getFloatback to summary
public float getFloat(Object target, long offset)

Implements abstract com.google.protobuf.UnsafeUtil.MemoryAccessor.getFloat.

Annotations
@Override
getIntback to summary
public int getInt(long address)

Implements abstract com.google.protobuf.UnsafeUtil.MemoryAccessor.getInt.

Annotations
@Override
getLongback to summary
public long getLong(long address)

Implements abstract com.google.protobuf.UnsafeUtil.MemoryAccessor.getLong.

Annotations
@Override
getStaticObjectback to summary
public Object getStaticObject(Field field)

Implements abstract com.google.protobuf.UnsafeUtil.MemoryAccessor.getStaticObject.

Annotations
@Override
putBooleanback to summary
public void putBoolean(Object target, long offset, boolean value)

Implements abstract com.google.protobuf.UnsafeUtil.MemoryAccessor.putBoolean.

Annotations
@Override
putByteback to summary
public void putByte(long address, byte value)

Implements abstract com.google.protobuf.UnsafeUtil.MemoryAccessor.putByte.

Annotations
@Override
putByteback to summary
public void putByte(Object target, long offset, byte value)

Implements abstract com.google.protobuf.UnsafeUtil.MemoryAccessor.putByte.

Annotations
@Override
putDoubleback to summary
public void putDouble(Object target, long offset, double value)

Implements abstract com.google.protobuf.UnsafeUtil.MemoryAccessor.putDouble.

Annotations
@Override
putFloatback to summary
public void putFloat(Object target, long offset, float value)

Implements abstract com.google.protobuf.UnsafeUtil.MemoryAccessor.putFloat.

Annotations
@Override
putIntback to summary
public void putInt(long address, int value)

Implements abstract com.google.protobuf.UnsafeUtil.MemoryAccessor.putInt.

Annotations
@Override
putLongback to summary
public void putLong(long address, long value)

Implements abstract com.google.protobuf.UnsafeUtil.MemoryAccessor.putLong.

Annotations
@Override
com.google.protobuf back to summary

private abstract Class UnsafeUtil.MemoryAccessor

extends Object
Class Inheritance
Known Direct Subclasses
com.google.protobuf.UnsafeUtil.JvmMemoryAccessor

Field Summary

Modifier and TypeField and Description
pack-priv sun.misc.Unsafe

Constructor Summary

AccessConstructor and Description
pack-priv
MemoryAccessor(sun.misc.Unsafe unsafe)

Method Summary

Modifier and TypeMethod and Description
public final int
public final int
public abstract void
copyMemory(long srcOffset, byte[] target, long targetIndex, long length)

public abstract void
copyMemory(byte[] src, long srcIndex, long targetOffset, long length)

public abstract boolean
getBoolean(Object target, long offset)

public abstract byte
getByte(Object target, long offset)

public abstract byte
getByte(long address)

public abstract double
getDouble(Object target, long offset)

public abstract float
getFloat(Object target, long offset)

public final int
getInt(Object target, long offset)

public abstract int
getInt(long address)

public final long
getLong(Object target, long offset)

public abstract long
getLong(long address)

public final Object
getObject(Object target, long offset)

public abstract Object
public final long
public abstract void
putBoolean(Object target, long offset, boolean value)

public abstract void
putByte(Object target, long offset, byte value)

public abstract void
putByte(long address, byte value)

public abstract void
putDouble(Object target, long offset, double value)

public abstract void
putFloat(Object target, long offset, float value)

public final void
putInt(Object target, long offset, int value)

public abstract void
putInt(long address, int value)

public final void
putLong(Object target, long offset, long value)

public abstract void
putLong(long address, long value)

public final void
putObject(Object target, long offset, Object value)

Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait

Field Detail

unsafeback to summary
pack-priv sun.misc.Unsafe unsafe

Constructor Detail

MemoryAccessorback to summary
pack-priv MemoryAccessor(sun.misc.Unsafe unsafe)

Method Detail

arrayBaseOffsetback to summary
public final int arrayBaseOffset(Class<?> clazz)
arrayIndexScaleback to summary
public final int arrayIndexScale(Class<?> clazz)
copyMemoryback to summary
public abstract void copyMemory(long srcOffset, byte[] target, long targetIndex, long length)
copyMemoryback to summary
public abstract void copyMemory(byte[] src, long srcIndex, long targetOffset, long length)
getBooleanback to summary
public abstract boolean getBoolean(Object target, long offset)
getByteback to summary
public abstract byte getByte(Object target, long offset)
getByteback to summary
public abstract byte getByte(long address)
getDoubleback to summary
public abstract double getDouble(Object target, long offset)
getFloatback to summary
public abstract float getFloat(Object target, long offset)
getIntback to summary
public final int getInt(Object target, long offset)
getIntback to summary
public abstract int getInt(long address)
getLongback to summary
public final long getLong(Object target, long offset)
getLongback to summary
public abstract long getLong(long address)
getObjectback to summary
public final Object getObject(Object target, long offset)
getStaticObjectback to summary
public abstract Object getStaticObject(Field field)
objectFieldOffsetback to summary
public final long objectFieldOffset(Field field)
putBooleanback to summary
public abstract void putBoolean(Object target, long offset, boolean value)
putByteback to summary
public abstract void putByte(Object target, long offset, byte value)
putByteback to summary
public abstract void putByte(long address, byte value)
putDoubleback to summary
public abstract void putDouble(Object target, long offset, double value)
putFloatback to summary
public abstract void putFloat(Object target, long offset, float value)
putIntback to summary
public final void putInt(Object target, long offset, int value)
putIntback to summary
public abstract void putInt(long address, int value)
putLongback to summary
public final void putLong(Object target, long offset, long value)
putLongback to summary
public abstract void putLong(long address, long value)
putObjectback to summary
public final void putObject(Object target, long offset, Object value)