40 #if defined(ENABLE_JNI_HEADERS)
41 # include "native/include/sun_misc_Unsafe.h"
78 return FieldAccess::get<int32_t>(o, offset);
100 return FieldAccess::get<jobject>(o, offset);
122 return FieldAccess::get<int32_t>(o, offset);
144 return FieldAccess::get<int32_t>(o, offset);
166 return FieldAccess::get<int32_t>(o, offset);
188 return FieldAccess::get<int32_t>(o, offset);
210 return FieldAccess::get<int64_t>(o, offset);
232 return FieldAccess::get<float>(o, offset);
254 return FieldAccess::get<double>(o, offset);
279 p = (int8_t *) (intptr_t)
address;
283 return (int32_t) value;
296 p = (int8_t *) (intptr_t)
address;
312 p = (int16_t *) (intptr_t)
address;
316 return (int32_t) value;
329 p = (int16_t *) (intptr_t)
address;
331 *p = (int16_t) value;
345 p = (uint16_t *) (intptr_t)
address;
349 return (int32_t) value;
362 p = (uint16_t *) (intptr_t)
address;
364 *p = (uint16_t) value;
378 p = (int32_t *) (intptr_t)
address;
395 p = (int32_t *) (intptr_t)
address;
411 p = (int64_t *) (intptr_t)
address;
428 p = (int64_t *) (intptr_t)
address;
444 p = (
float *) (intptr_t)
address;
461 p = (
float*) (intptr_t)
address;
477 p = (
double*) (intptr_t)
address;
494 p = (
double*) (intptr_t)
address;
510 p = (uintptr_t *) (intptr_t)
address;
527 p = (uintptr_t *) (intptr_t)
address;
540 #if defined(WITH_JAVA_RUNTIME_LIBRARY_GNU_CLASSPATH)
546 #elif defined(WITH_JAVA_RUNTIME_LIBRARY_OPENJDK)
552 # error unknown configuration
569 length = (size_t) bytes;
571 if ((length != (uint64_t) bytes) || (bytes < 0)) {
576 p =
MNEW(uint8_t, length);
578 return (int64_t) (intptr_t) p;
594 length = (size_t) bytes;
596 if ((length != (uint64_t) bytes) || (bytes < 0)) {
603 p = (
void *) (((uint8_t *) o) + offset);
625 length = (size_t) bytes;
627 if ((length != (uint64_t) bytes) || (bytes < 0)) {
634 src = (
void *) (((uint8_t *) srcBase) + srcOffset);
635 dest = (
void *) (((uint8_t *) destBase) + destOffset);
650 length = (size_t) bytes;
652 if ((length != (uint64_t) bytes) || (bytes < 0)) {
657 p = (
void *) (intptr_t)
address;
679 length = (size_t) bytes;
681 if ((length != (uint64_t) bytes) || (bytes < 0)) {
686 src = (
void *) (intptr_t) srcAddress;
687 dest = (
void *) (intptr_t) destAddress;
702 p = (
void *) (intptr_t)
address;
709 MFREE(p, uint8_t, 1);
733 #if defined(WITH_JAVA_RUNTIME_LIBRARY_GNU_CLASSPATH)
739 #elif defined(WITH_JAVA_RUNTIME_LIBRARY_OPENJDK)
745 # error unknown configuration
821 return SIZEOF_VOID_P;
864 if ((off < 0) || (len < 0) || ((off + len) > ba.
get_length())) {
889 #if defined(WITH_JAVA_RUNTIME_LIBRARY_GNU_CLASSPATH)
892 jlc.
set_pd(protectionDomain);
944 p = (
void **) (((uint8_t *) o) + offset);
947 #if defined(CAS_PROVIDES_FULL_BARRIER) && CAS_PROVIDES_FULL_BARRIER
953 if (result == expected)
972 p = (uint32_t *) (((uint8_t *) o) + offset);
975 #if defined(CAS_PROVIDES_FULL_BARRIER) && CAS_PROVIDES_FULL_BARRIER
981 if (result == (uint32_t) expected)
1000 p = (uint64_t *) (((uint8_t *) o) + offset);
1003 #if defined(CAS_PROVIDES_FULL_BARRIER) && CAS_PROVIDES_FULL_BARRIER
1009 if (result == (uint64_t) expected)
1023 return FieldAccess::get_volatile<jobject>(o, offset);
1045 return FieldAccess::get_volatile<int32_t>(o, offset);
1067 return FieldAccess::get_volatile<int32_t>(o, offset);
1089 return FieldAccess::get_volatile<int32_t>(o, offset);
1111 return FieldAccess::get_volatile<int32_t>(o, offset);
1133 return FieldAccess::get_volatile<int32_t>(o, offset);
1155 return FieldAccess::get_volatile<int64_t>(o, offset);
1177 return FieldAccess::get_volatile<float>(o, offset);
1199 return FieldAccess::get_volatile<double>(o, offset);
1257 #if defined(WITH_JAVA_RUNTIME_LIBRARY_GNU_CLASSPATH)
1286 #define MAX_SAMPLES 3
1299 for (
int i = 0;
i < result;
i++) {
void exceptions_throw_illegalargumentexception(void)
JNIEXPORT void JNICALL Java_sun_misc_Unsafe_park(JNIEnv *env, jobject _this, jboolean isAbsolute, jlong time)
JNIEXPORT jshort JNICALL Java_sun_misc_Unsafe_getShortVolatile(JNIEnv *env, jobject _this, jobject o, jlong offset)
static void * memset(void *s, int c, size_t n)
JNIEXPORT jboolean JNICALL Java_sun_misc_Unsafe_getBoolean(JNIEnv *env, jobject _this, jobject o, jlong offset)
JNIEXPORT jshort JNICALL Java_sun_misc_Unsafe_getShort__J(JNIEnv *env, jobject _this, jlong address)
JNIEXPORT jlong JNICALL Java_sun_misc_Unsafe_getLongVolatile(JNIEnv *env, jobject _this, jobject o, jlong offset)
JNIEXPORT jbyte JNICALL Java_sun_misc_Unsafe_getByte__J(JNIEnv *env, jobject _this, jlong address)
JNIEnv jthread jmethodID jlocation jclass jobject jfieldID field
JNIEXPORT void JNICALL Java_sun_misc_Unsafe_putIntVolatile(JNIEnv *env, jobject _this, jobject o, jlong offset, jint x)
JNIEXPORT void JNICALL Java_sun_misc_Unsafe_putInt__JI(JNIEnv *env, jobject _this, jlong address, jint value)
T compare_and_swap(T *p, T o, T n)
Table containing all native methods registered with the VM.
NativeMethods & get_nativemethods()
void register_methods(Utf8String classname, const JNINativeMethod *methods, size_t count)
Register native methods with the VM.
JNIEXPORT jchar JNICALL Java_sun_misc_Unsafe_getCharVolatile(JNIEnv *env, jobject _this, jobject o, jlong offset)
JNIEXPORT jclass JNICALL Java_sun_misc_Unsafe_defineClass__Ljava_lang_String_2_3BIILjava_lang_ClassLoader_2Ljava_security_ProtectionDomain_2(JNIEnv *env, jobject _this, jstring name, jbyteArray b, jint off, jint len, jobject loader, jobject protectionDomain)
JNIEXPORT void JNICALL Java_sun_misc_Unsafe_putShort__Ljava_lang_Object_2JS(JNIEnv *env, jobject _this, jobject o, jlong offset, jshort x)
JNIEXPORT jbyte JNICALL Java_sun_misc_Unsafe_getByteVolatile(JNIEnv *env, jobject _this, jobject o, jlong offset)
void threads_unpark(threadobject *t)
Unpark the specified thread.
JNIEXPORT void JNICALL Java_sun_misc_Unsafe_putFloat__Ljava_lang_Object_2JF(JNIEnv *env, jobject _this, jobject o, jlong offset, jfloat x)
JNIEXPORT jshort JNICALL Java_sun_misc_Unsafe_getShort__Ljava_lang_Object_2J(JNIEnv *env, jobject _this, jobject o, jlong offset)
#define NATIVE_METHODS_COUNT
JNIEXPORT jint JNICALL Java_sun_misc_Unsafe_addressSize(JNIEnv *env, jobject _this)
int8_t * get_raw_data_ptr()
JNIEXPORT void JNICALL Java_sun_misc_Unsafe_putObject(JNIEnv *env, jobject _this, jobject o, jlong offset, jobject x)
JNIEXPORT void JNICALL Java_sun_misc_Unsafe_copyMemory_jdk6(JNIEnv *env, jobject _this, jlong srcAddress, jlong destAddress, jlong bytes)
JNIEXPORT void JNICALL Java_sun_misc_Unsafe_putFloatVolatile(JNIEnv *env, jobject _this, jobject o, jlong offset, jfloat x)
JNIEXPORT void JNICALL Java_sun_misc_Unsafe_putOrderedLong(JNIEnv *env, jobject _this, jobject o, jlong offset, jlong x)
void set_pd(java_handle_t *value)
JNIEXPORT jchar JNICALL Java_sun_misc_Unsafe_getChar__Ljava_lang_Object_2J(JNIEnv *env, jobject _this, jobject o, jlong offset)
GNU Classpath java/lang/reflect/Field.
JNIEXPORT void JNICALL Java_sun_misc_Unsafe_putLong__Ljava_lang_Object_2JJ(JNIEnv *env, jobject _this, jobject o, jlong offset, jlong x)
JNIEXPORT jint JNICALL Java_sun_misc_Unsafe_pageSize(JNIEnv *env, jobject _this)
JNIEXPORT void JNICALL Java_sun_misc_Unsafe_putFloat__JF(JNIEnv *env, jobject _this, jlong address, jfloat value)
JNIEXPORT jlong JNICALL Java_sun_misc_Unsafe_getLong__Ljava_lang_Object_2J(JNIEnv *env, jobject _this, jobject o, jlong offset)
static void set(java_handle_t *h, const off_t offset, T value)
JNIEXPORT void JNICALL Java_sun_misc_Unsafe_putBoolean(JNIEnv *env, jobject _this, jobject o, jlong offset, jboolean x)
JNIEXPORT jobject JNICALL Java_sun_misc_Unsafe_getObject(JNIEnv *env, jobject _this, jobject o, jlong offset)
JNIEXPORT void JNICALL Java_sun_misc_Unsafe_putLong__JJ(JNIEnv *env, jobject _this, jlong address, jlong value)
JNIEXPORT void JNICALL Java_sun_misc_Unsafe_putDouble__Ljava_lang_Object_2JD(JNIEnv *env, jobject _this, jobject o, jlong offset, jdouble x)
JNIEXPORT jlong JNICALL Java_sun_misc_Unsafe_staticFieldOffset(JNIEnv *env, jobject _this, jobject f)
JNIEXPORT void JNICALL Java_sun_misc_Unsafe_copyMemory_jdk7(JNIEnv *env, jobject _this, jobject srcBase, jlong srcOffset, jobject destBase, jlong destOffset, jlong bytes)
JNIEnv jclass jobject const char * name
JNIEXPORT jint JNICALL Java_sun_misc_Unsafe_getInt__Ljava_lang_Object_2J(JNIEnv *env, jobject _this, jobject o, jlong offset)
void set_element(int32_t index, T value)
JNIEXPORT void JNICALL Java_sun_misc_Unsafe_putLongVolatile(JNIEnv *env, jobject _this, jobject o, jlong offset, jlong x)
JNIEXPORT jfloat JNICALL Java_sun_misc_Unsafe_getFloat__Ljava_lang_Object_2J(JNIEnv *env, jobject _this, jobject o, jlong offset)
JNIEXPORT jobject JNICALL Java_sun_misc_Unsafe_staticFieldBase(JNIEnv *env, jobject _this, jobject field)
JNIEXPORT jfloat JNICALL Java_sun_misc_Unsafe_getFloat__J(JNIEnv *env, jobject _this, jlong address)
classloader_t * loader_hashtable_classloader_add(java_handle_t *cl)
java_handle_t * builtin_new(classinfo *c)
JNIEXPORT jlong JNICALL Java_sun_misc_Unsafe_getLong__J(JNIEnv *env, jobject _this, jlong address)
static void set_volatile(java_handle_t *h, const off_t offset, T value)
JNIEXPORT jobject JNICALL Java_sun_misc_Unsafe_allocateInstance(JNIEnv *env, jobject _this, jclass cls)
JNIEXPORT void JNICALL Java_sun_misc_Unsafe_freeMemory(JNIEnv *env, jobject _this, jlong address)
#define LLNI_classinfo_wrap(classinfo)
JNIEXPORT void JNICALL Java_sun_misc_Unsafe_putByte__JB(JNIEnv *env, jobject _this, jlong address, jbyte value)
JNIEXPORT jboolean JNICALL Java_sun_misc_Unsafe_compareAndSwapLong(JNIEnv *env, jobject _this, jobject o, jlong offset, jlong expected, jlong x)
JNIEXPORT void JNICALL Java_sun_misc_Unsafe_putOrderedInt(JNIEnv *env, jobject _this, jobject o, jlong offset, jint x)
#define MFREE(ptr, type, num)
int32_t get_length() const
JNIEXPORT jdouble JNICALL Java_sun_misc_Unsafe_getDouble__Ljava_lang_Object_2J(JNIEnv *env, jobject _this, jobject o, jlong offset)
void exceptions_set_exception(java_handle_t *e)
JNIEXPORT void JNICALL Java_sun_misc_Unsafe_putShort__JS(JNIEnv *env, jobject _this, jlong address, jshort value)
JNIEXPORT jint JNICALL Java_sun_misc_Unsafe_getIntVolatile(JNIEnv *env, jobject _this, jobject o, jlong offset)
JNIEXPORT void JNICALL Java_sun_misc_Unsafe_putDouble__JD(JNIEnv *env, jobject _this, jlong address, jdouble value)
static int getpagesize(void)
void exceptions_throw_nullpointerexception(void)
JNIEXPORT void JNICALL Java_sun_misc_Unsafe_setMemory_jdk7(JNIEnv *env, jobject _this, jobject o, jlong offset, jlong bytes, jbyte value)
void exceptions_throw_internalerror(const char *message,...)
JNIEXPORT void JNICALL Java_sun_misc_Unsafe_putDoubleVolatile(JNIEnv *env, jobject _this, jobject o, jlong offset, jdouble x)
static Utf8String from_utf8(const char *, size_t)
JNIEnv jthread jmethodID void * address
JNIEXPORT jlong JNICALL Java_sun_misc_Unsafe_allocateMemory(JNIEnv *env, jobject _this, jlong bytes)
JNIEnv jclass jobject loader
static void * memcpy(void *dest, const void *src, size_t n)
JNIEXPORT jboolean JNICALL Java_sun_misc_Unsafe_compareAndSwapInt(JNIEnv *env, jobject _this, jobject o, jlong offset, jint expected, jint x)
JNIEXPORT jint JNICALL Java_sun_misc_Unsafe_arrayBaseOffset(JNIEnv *env, jobject _this, jclass arrayClass)
JNIEXPORT jboolean JNICALL Java_sun_misc_Unsafe_compareAndSwapObject(JNIEnv *env, jobject _this, jobject o, jlong offset, jobject expected, jobject x)
JNIEXPORT jboolean JNICALL Java_sun_misc_Unsafe_getBooleanVolatile(JNIEnv *env, jobject _this, jobject o, jlong offset)
JNIEXPORT void JNICALL Java_sun_misc_Unsafe_ensureClassInitialized(JNIEnv *env, jobject _this, jclass clazz)
bool initialize_class(classinfo *c)
JNIEXPORT jlong JNICALL Java_sun_misc_Unsafe_getAddress(JNIEnv *env, jobject _this, jlong address)
JNIEXPORT void JNICALL Java_sun_misc_Unsafe_putOrderedObject(JNIEnv *env, jobject _this, jobject o, jlong offset, jobject x)
JNIEXPORT jchar JNICALL Java_sun_misc_Unsafe_getChar__J(JNIEnv *env, jobject _this, jlong address)
threadobject * thread_get_thread(java_handle_t *h)
JNIEXPORT jdouble JNICALL Java_sun_misc_Unsafe_getDouble__J(JNIEnv *env, jobject _this, jlong address)
arraydescriptor * arraydesc
JNIEXPORT void JNICALL Java_sun_misc_Unsafe_putByte__Ljava_lang_Object_2JB(JNIEnv *env, jobject _this, jobject o, jlong offset, jbyte x)
void exceptions_throw_arrayindexoutofboundsexception(void)
JNIEXPORT void JNICALL Java_sun_misc_Unsafe_putInt__Ljava_lang_Object_2JI(JNIEnv *env, jobject _this, jobject o, jlong offset, jint x)
java_handle_t * get_vmThread() const
JNIEXPORT void JNICALL Java_sun_misc_Unsafe_putShortVolatile(JNIEnv *env, jobject _this, jobject o, jlong offset, jshort x)
JNIEXPORT void JNICALL Java_sun_misc_Unsafe_registerNatives(JNIEnv *env, jclass clazz)
void _Jv_sun_misc_Unsafe_init()
void memory_barrier(void)
JNIEXPORT void JNICALL Java_sun_misc_Unsafe_putObjectVolatile(JNIEnv *env, jobject _this, jobject o, jlong offset, jobject x)
JNIEXPORT void JNICALL Java_sun_misc_Unsafe_putCharVolatile(JNIEnv *env, jobject _this, jobject o, jlong offset, jchar x)
void threads_park(bool absolute, int64_t nanos)
Park the current thread for the specified amount of time or until a specified deadline.
JNIEXPORT void JNICALL Java_sun_misc_Unsafe_throwException(JNIEnv *env, jobject _this, jobject ee)
JNIEXPORT void JNICALL Java_sun_misc_Unsafe_putChar__Ljava_lang_Object_2JC(JNIEnv *env, jobject _this, jobject o, jlong offset, jchar x)
JNIEXPORT void JNICALL Java_sun_misc_Unsafe_putAddress(JNIEnv *env, jobject _this, jlong address, jlong value)
java_handle_t * get_f() const
GNU Classpath java/lang/Thread.
JNIEXPORT jdouble JNICALL Java_sun_misc_Unsafe_getDoubleVolatile(JNIEnv *env, jobject _this, jobject o, jlong offset)
fieldinfo * get_field() const
JNIEXPORT void JNICALL Java_sun_misc_Unsafe_setMemory_jdk6(JNIEnv *env, jobject _this, jlong address, jlong bytes, jbyte value)
JNIEXPORT void JNICALL Java_sun_misc_Unsafe_unpark(JNIEnv *env, jobject _this, jobject thread)
#define LLNI_classinfo_unwrap(clazz)
JNIEXPORT jint JNICALL Java_sun_misc_Unsafe_getLoadAverage(JNIEnv *env, jobject _this, jdoubleArray loadavg, jint nelem)
JNIEXPORT void JNICALL Java_sun_misc_Unsafe_putBooleanVolatile(JNIEnv *env, jobject _this, jobject o, jlong offset, jboolean x)
GNU Classpath java/lang/Class.
JNIEXPORT jint JNICALL Java_sun_misc_Unsafe_getInt__J(JNIEnv *env, jobject _this, jlong address)
JNIEXPORT jint JNICALL Java_sun_misc_Unsafe_arrayIndexScale(JNIEnv *env, jobject _this, jclass arrayClass)
JNIEXPORT jobject JNICALL Java_sun_misc_Unsafe_getObjectVolatile(JNIEnv *env, jobject _this, jobject o, jlong offset)
void instruction_barrier(void)
static int getloadavg(double loadavg[], int nelem)
const char const void jint length
JNIEXPORT void JNICALL Java_sun_misc_Unsafe_putByteVolatile(JNIEnv *env, jobject _this, jobject o, jlong offset, jbyte x)
classinfo * class_define(Utf8String name, classloader_t *cl, int32_t length, uint8_t *data, java_handle_t *pd)
JNIEXPORT jbyte JNICALL Java_sun_misc_Unsafe_getByte__Ljava_lang_Object_2J(JNIEnv *env, jobject _this, jobject o, jlong offset)
GNU Classpath java/lang/reflect/VMField.
static VM * get_current()
JNIEXPORT jfloat JNICALL Java_sun_misc_Unsafe_getFloatVolatile(JNIEnv *env, jobject _this, jobject o, jlong offset)
JNIEXPORT jlong JNICALL Java_sun_misc_Unsafe_objectFieldOffset(JNIEnv *env, jobject _this, jobject field)
static JNINativeMethod methods[]
JNIEXPORT void JNICALL Java_sun_misc_Unsafe_putChar__JC(JNIEnv *env, jobject _this, jlong address, jchar value)
Utf8String to_utf8_dot_to_slash() const