Package com.aparapi.internal.util
Class UnsafeWrapper
- java.lang.Object
-
- com.aparapi.internal.util.UnsafeWrapper
-
public class UnsafeWrapper extends java.lang.Object
A wrapper around sun.misc.Unsafe for handling atomic operations, copies from fields to arrays and vice versa. We avoid usingsun.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.
-
-
Field Summary
Fields Modifier and Type Field 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 Summary
Constructors Constructor Description UnsafeWrapper()
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method 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)
-
-
-
Field Detail
-
unsafe
private static java.lang.Object unsafe
-
getIntVolatileMethod
private static java.lang.reflect.Method getIntVolatileMethod
-
arrayBaseOffsetMethod
private static java.lang.reflect.Method arrayBaseOffsetMethod
-
arrayIndexScaleMethod
private static java.lang.reflect.Method arrayIndexScaleMethod
-
getObjectMethod
private static java.lang.reflect.Method getObjectMethod
-
getIntMethod
private static java.lang.reflect.Method getIntMethod
-
getFloatMethod
private static java.lang.reflect.Method getFloatMethod
-
getByteMethod
private static java.lang.reflect.Method getByteMethod
-
getBooleanMethod
private static java.lang.reflect.Method getBooleanMethod
-
getLongMethod
private static java.lang.reflect.Method getLongMethod
-
objectFieldOffsetMethod
private static java.lang.reflect.Method objectFieldOffsetMethod
-
putBooleanMethod
private static java.lang.reflect.Method putBooleanMethod
-
putIntMethod
private static java.lang.reflect.Method putIntMethod
-
putFloatMethod
private static java.lang.reflect.Method putFloatMethod
-
putDoubleMethod
private static java.lang.reflect.Method putDoubleMethod
-
putByteMethod
private static java.lang.reflect.Method putByteMethod
-
putLongMethod
private static java.lang.reflect.Method putLongMethod
-
compareAndSwapIntMethod
private static java.lang.reflect.Method compareAndSwapIntMethod
-
intArrayBase
private static int intArrayBase
-
intArrayScale
private static int intArrayScale
-
-
Method Detail
-
atomicAdd
public static int atomicAdd(int[] _arr, int _index, int _delta)
-
arrayBaseOffset
public static int arrayBaseOffset(java.lang.Class<?> _arrayClass)
-
arrayIndexScale
public static int arrayIndexScale(java.lang.Class<?> _arrayClass)
-
getObject
public static java.lang.Object getObject(java.lang.Object _object, long _offset)
-
getInt
public static int getInt(java.lang.Object _object, long _offset)
-
getFloat
public static float getFloat(java.lang.Object _object, long _offset)
-
getByte
public static byte getByte(java.lang.Object _object, long _offset)
-
getBoolean
public static boolean getBoolean(java.lang.Object _object, long _offset)
-
getLong
public static long getLong(java.lang.Object _object, long _offset)
-
putBoolean
public static void putBoolean(java.lang.Object _object, long _offset, boolean _boolean)
-
putFloat
public static void putFloat(java.lang.Object _object, long _offset, float _float)
-
putInt
public static void putInt(java.lang.Object _object, long _offset, int _int)
-
putDouble
public static void putDouble(java.lang.Object _object, long _offset, double _double)
-
putByte
public static void putByte(java.lang.Object _object, long _offset, byte _byte)
-
putLong
public static void putLong(java.lang.Object _object, long _offset, long _long)
-
objectFieldOffset
public static long objectFieldOffset(java.lang.reflect.Field _field)
-
-