public class UnsafeWrapper
extends java.lang.Object
sun.misc.Unsafe
directly using reflection, mostly just to avoid getting 'unsafe' compiler errors.
This might need to be changed if we start to see performance issues.Modifier and Type | Field and Description |
---|---|
private static java.lang.reflect.Method |
arrayBaseOffsetMethod |
private static java.lang.reflect.Method |
arrayIndexScaleMethod |
private static java.lang.reflect.Method |
compareAndSwapIntMethod |
private static java.lang.reflect.Method |
getBooleanMethod |
private static java.lang.reflect.Method |
getByteMethod |
private static java.lang.reflect.Method |
getFloatMethod |
private static java.lang.reflect.Method |
getIntMethod |
private static java.lang.reflect.Method |
getIntVolatileMethod |
private static java.lang.reflect.Method |
getLongMethod |
private static java.lang.reflect.Method |
getObjectMethod |
private static int |
intArrayBase |
private static int |
intArrayScale |
private static java.lang.reflect.Method |
objectFieldOffsetMethod |
private static java.lang.reflect.Method |
putBooleanMethod |
private static java.lang.reflect.Method |
putByteMethod |
private static java.lang.reflect.Method |
putDoubleMethod |
private static java.lang.reflect.Method |
putFloatMethod |
private static java.lang.reflect.Method |
putIntMethod |
private static java.lang.reflect.Method |
putLongMethod |
private static java.lang.Object |
unsafe |
Constructor and Description |
---|
UnsafeWrapper() |
Modifier and Type | Method and Description |
---|---|
static int |
arrayBaseOffset(java.lang.Class<?> _arrayClass) |
static int |
arrayIndexScale(java.lang.Class<?> _arrayClass) |
static int |
atomicAdd(int[] _arr,
int _index,
int _delta) |
static boolean |
getBoolean(java.lang.Object _object,
long _offset) |
static byte |
getByte(java.lang.Object _object,
long _offset) |
static float |
getFloat(java.lang.Object _object,
long _offset) |
static int |
getInt(java.lang.Object _object,
long _offset) |
static long |
getLong(java.lang.Object _object,
long _offset) |
static java.lang.Object |
getObject(java.lang.Object _object,
long _offset) |
static long |
objectFieldOffset(java.lang.reflect.Field _field) |
static void |
putBoolean(java.lang.Object _object,
long _offset,
boolean _boolean) |
static void |
putByte(java.lang.Object _object,
long _offset,
byte _byte) |
static void |
putDouble(java.lang.Object _object,
long _offset,
double _double) |
static void |
putFloat(java.lang.Object _object,
long _offset,
float _float) |
static void |
putInt(java.lang.Object _object,
long _offset,
int _int) |
static void |
putLong(java.lang.Object _object,
long _offset,
long _long) |
private static java.lang.Object unsafe
private static java.lang.reflect.Method getIntVolatileMethod
private static java.lang.reflect.Method arrayBaseOffsetMethod
private static java.lang.reflect.Method arrayIndexScaleMethod
private static java.lang.reflect.Method getObjectMethod
private static java.lang.reflect.Method getIntMethod
private static java.lang.reflect.Method getFloatMethod
private static java.lang.reflect.Method getByteMethod
private static java.lang.reflect.Method getBooleanMethod
private static java.lang.reflect.Method getLongMethod
private static java.lang.reflect.Method objectFieldOffsetMethod
private static java.lang.reflect.Method putBooleanMethod
private static java.lang.reflect.Method putIntMethod
private static java.lang.reflect.Method putFloatMethod
private static java.lang.reflect.Method putDoubleMethod
private static java.lang.reflect.Method putByteMethod
private static java.lang.reflect.Method putLongMethod
private static java.lang.reflect.Method compareAndSwapIntMethod
private static int intArrayBase
private static int intArrayScale
public static int atomicAdd(int[] _arr, int _index, int _delta)
public static int arrayBaseOffset(java.lang.Class<?> _arrayClass)
public static int arrayIndexScale(java.lang.Class<?> _arrayClass)
public static java.lang.Object getObject(java.lang.Object _object, long _offset)
public static int getInt(java.lang.Object _object, long _offset)
public static float getFloat(java.lang.Object _object, long _offset)
public static byte getByte(java.lang.Object _object, long _offset)
public static boolean getBoolean(java.lang.Object _object, long _offset)
public static long getLong(java.lang.Object _object, long _offset)
public static void putBoolean(java.lang.Object _object, long _offset, boolean _boolean)
public static void putFloat(java.lang.Object _object, long _offset, float _float)
public static void putInt(java.lang.Object _object, long _offset, int _int)
public static void putDouble(java.lang.Object _object, long _offset, double _double)
public static void putByte(java.lang.Object _object, long _offset, byte _byte)
public static void putLong(java.lang.Object _object, long _offset, long _long)
public static long objectFieldOffset(java.lang.reflect.Field _field)