Package com.aparapi.internal.util
Class UnsafeWrapper
java.lang.Object
com.aparapi.internal.util.UnsafeWrapper
public class UnsafeWrapper extends Object
A wrapper around sun.misc.Unsafe for handling atomic operations, copies from fields to arrays and vice versa.
We avoid using
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.- Author:
- gfrost
-
Constructor Summary
Constructors Constructor Description UnsafeWrapper()
-
Method Summary
Modifier and Type Method Description static int
arrayBaseOffset(Class<?> _arrayClass)
static int
arrayIndexScale(Class<?> _arrayClass)
static int
atomicAdd(int[] _arr, int _index, int _delta)
static boolean
getBoolean(Object _object, long _offset)
static byte
getByte(Object _object, long _offset)
static float
getFloat(Object _object, long _offset)
static int
getInt(Object _object, long _offset)
static long
getLong(Object _object, long _offset)
static Object
getObject(Object _object, long _offset)
static long
objectFieldOffset(Field _field)
static void
putBoolean(Object _object, long _offset, boolean _boolean)
static void
putByte(Object _object, long _offset, byte _byte)
static void
putDouble(Object _object, long _offset, double _double)
static void
putFloat(Object _object, long _offset, float _float)
static void
putInt(Object _object, long _offset, int _int)
static void
putLong(Object _object, long _offset, long _long)
-
Constructor Details
-
UnsafeWrapper
public UnsafeWrapper()
-
-
Method Details
-
atomicAdd
public static int atomicAdd(int[] _arr, int _index, int _delta) -
arrayBaseOffset
-
arrayIndexScale
-
getObject
-
getInt
-
getFloat
-
getByte
-
getBoolean
-
getLong
-
putBoolean
-
putFloat
-
putInt
-
putDouble
-
putByte
-
putLong
-
objectFieldOffset
-