Package rx.internal.util.unsafe
Class UnsafeAccess
- java.lang.Object
-
- rx.internal.util.unsafe.UnsafeAccess
-
@SuppressAnimalSniffer public final class UnsafeAccess extends java.lang.Object
All use of this class MUST first check that UnsafeAccess.isUnsafeAvailable() == true otherwise NPEs will happen in environments without "suc.misc.Unsafe" such as Android.Note that you can force RxJava to not use Unsafe API by setting any value to System Property
rx.unsafe-disable.
-
-
Field Summary
Fields Modifier and Type Field Description private static booleanDISABLED_BY_USERstatic sun.misc.UnsafeUNSAFE
-
Constructor Summary
Constructors Modifier Constructor Description privateUnsafeAccess()
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description static longaddressOf(java.lang.Class<?> clazz, java.lang.String fieldName)Returns the address of the specific field on the class and wraps a NoSuchFieldException into an internal error.static booleancompareAndSwapInt(java.lang.Object obj, long offset, int expected, int newValue)static intgetAndAddInt(java.lang.Object obj, long offset, int n)static intgetAndIncrementInt(java.lang.Object obj, long offset)static intgetAndSetInt(java.lang.Object obj, long offset, int newValue)static booleanisUnsafeAvailable()
-
-
-
Method Detail
-
isUnsafeAvailable
public static boolean isUnsafeAvailable()
-
getAndIncrementInt
public static int getAndIncrementInt(java.lang.Object obj, long offset)
-
getAndAddInt
public static int getAndAddInt(java.lang.Object obj, long offset, int n)
-
getAndSetInt
public static int getAndSetInt(java.lang.Object obj, long offset, int newValue)
-
compareAndSwapInt
public static boolean compareAndSwapInt(java.lang.Object obj, long offset, int expected, int newValue)
-
addressOf
public static long addressOf(java.lang.Class<?> clazz, java.lang.String fieldName)Returns the address of the specific field on the class and wraps a NoSuchFieldException into an internal error.One can avoid using static initializers this way and just assign the address directly to the target static field.
- Parameters:
clazz- the target classfieldName- the target field name- Returns:
- the address (offset) of the field
-
-