src/share/vm/prims/unsafe.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File hotspot Sdiff src/share/vm/prims

src/share/vm/prims/unsafe.cpp

Print this page




 467   }
 468 
 469   t->set_doing_unsafe_access(false);
 470 } UNSAFE_END
 471 
 472 
 473 UNSAFE_LEAF(jlong, Unsafe_GetNativeAddress(JNIEnv *env, jobject unsafe, jlong addr)) {
 474   void* p = addr_from_java(addr);
 475 
 476   return addr_to_java(*(void**)p);
 477 } UNSAFE_END
 478 
 479 UNSAFE_LEAF(void, Unsafe_SetNativeAddress(JNIEnv *env, jobject unsafe, jlong addr, jlong x)) {
 480   void* p = addr_from_java(addr);
 481   *(void**)p = addr_from_java(x);
 482 } UNSAFE_END
 483 
 484 
 485 ////// Allocation requests
 486 
 487 UNSAFE_ENTRY(jobject, Unsafe_AllocateInstance(JNIEnv *env, jobject unsafe, jclass cls)) {
 488   ThreadToNativeFromVM ttnfv(thread);
 489   return env->AllocObject(cls);
 490 } UNSAFE_END
 491 
 492 UNSAFE_ENTRY(jlong, Unsafe_AllocateMemory0(JNIEnv *env, jobject unsafe, jlong size)) {
 493   size_t sz = (size_t)size;
 494 
 495   sz = round_to(sz, HeapWordSize);
 496   void* x = os::malloc(sz, mtInternal);
 497 
 498   return addr_to_java(x);
 499 } UNSAFE_END
 500 
 501 UNSAFE_ENTRY(jlong, Unsafe_ReallocateMemory0(JNIEnv *env, jobject unsafe, jlong addr, jlong size)) {
 502   void* p = addr_from_java(addr);
 503   size_t sz = (size_t)size;
 504   sz = round_to(sz, HeapWordSize);
 505 
 506   void* x = os::realloc(p, sz, mtInternal);
 507 


1166     DECLARE_GETPUTNATIVE(Float, F),
1167     DECLARE_GETPUTNATIVE(Double, D),
1168 
1169     {CC "getAddress",         CC "(" ADR ")" ADR,        FN_PTR(Unsafe_GetNativeAddress)},
1170     {CC "putAddress",         CC "(" ADR "" ADR ")V",    FN_PTR(Unsafe_SetNativeAddress)},
1171 
1172     {CC "allocateMemory0",    CC "(J)" ADR,              FN_PTR(Unsafe_AllocateMemory0)},
1173     {CC "reallocateMemory0",  CC "(" ADR "J)" ADR,       FN_PTR(Unsafe_ReallocateMemory0)},
1174     {CC "freeMemory0",        CC "(" ADR ")V",           FN_PTR(Unsafe_FreeMemory0)},
1175 
1176     {CC "objectFieldOffset0", CC "(" FLD ")J",           FN_PTR(Unsafe_ObjectFieldOffset0)},
1177     {CC "staticFieldOffset0", CC "(" FLD ")J",           FN_PTR(Unsafe_StaticFieldOffset0)},
1178     {CC "staticFieldBase0",   CC "(" FLD ")" OBJ,        FN_PTR(Unsafe_StaticFieldBase0)},
1179     {CC "ensureClassInitialized0", CC "(" CLS ")V",      FN_PTR(Unsafe_EnsureClassInitialized0)},
1180     {CC "arrayBaseOffset0",   CC "(" CLS ")I",           FN_PTR(Unsafe_ArrayBaseOffset0)},
1181     {CC "arrayIndexScale0",   CC "(" CLS ")I",           FN_PTR(Unsafe_ArrayIndexScale0)},
1182     {CC "addressSize0",       CC "()I",                  FN_PTR(Unsafe_AddressSize0)},
1183     {CC "pageSize",           CC "()I",                  FN_PTR(Unsafe_PageSize)},
1184 
1185     {CC "defineClass0",       CC "(" DC_Args ")" CLS,    FN_PTR(Unsafe_DefineClass0)},
1186     {CC "allocateInstance",   CC "(" CLS ")" OBJ,        FN_PTR(Unsafe_AllocateInstance)},
1187     {CC "throwException",     CC "(" THR ")V",           FN_PTR(Unsafe_ThrowException)},
1188     {CC "compareAndSwapObject", CC "(" OBJ "J" OBJ "" OBJ ")Z", FN_PTR(Unsafe_CompareAndSwapObject)},
1189     {CC "compareAndSwapInt",  CC "(" OBJ "J""I""I"")Z",  FN_PTR(Unsafe_CompareAndSwapInt)},
1190     {CC "compareAndSwapLong", CC "(" OBJ "J""J""J"")Z",  FN_PTR(Unsafe_CompareAndSwapLong)},
1191     {CC "compareAndExchangeObjectVolatile", CC "(" OBJ "J" OBJ "" OBJ ")" OBJ, FN_PTR(Unsafe_CompareAndExchangeObject)},
1192     {CC "compareAndExchangeIntVolatile",  CC "(" OBJ "J""I""I"")I", FN_PTR(Unsafe_CompareAndExchangeInt)},
1193     {CC "compareAndExchangeLongVolatile", CC "(" OBJ "J""J""J"")J", FN_PTR(Unsafe_CompareAndExchangeLong)},
1194 
1195     {CC "park",               CC "(ZJ)V",                FN_PTR(Unsafe_Park)},
1196     {CC "unpark",             CC "(" OBJ ")V",           FN_PTR(Unsafe_Unpark)},
1197 
1198     {CC "getLoadAverage0",    CC "([DI)I",               FN_PTR(Unsafe_GetLoadAverage0)},
1199 
1200     {CC "copyMemory0",        CC "(" OBJ "J" OBJ "JJ)V", FN_PTR(Unsafe_CopyMemory0)},
1201     {CC "copySwapMemory0",    CC "(" OBJ "J" OBJ "JJJ)V", FN_PTR(Unsafe_CopySwapMemory0)},
1202     {CC "setMemory0",         CC "(" OBJ "JJB)V",        FN_PTR(Unsafe_SetMemory0)},
1203 
1204     {CC "defineAnonymousClass0", CC "(" DAC_Args ")" CLS, FN_PTR(Unsafe_DefineAnonymousClass0)},
1205 
1206     {CC "shouldBeInitialized0", CC "(" CLS ")Z",         FN_PTR(Unsafe_ShouldBeInitialized0)},




 467   }
 468 
 469   t->set_doing_unsafe_access(false);
 470 } UNSAFE_END
 471 
 472 
 473 UNSAFE_LEAF(jlong, Unsafe_GetNativeAddress(JNIEnv *env, jobject unsafe, jlong addr)) {
 474   void* p = addr_from_java(addr);
 475 
 476   return addr_to_java(*(void**)p);
 477 } UNSAFE_END
 478 
 479 UNSAFE_LEAF(void, Unsafe_SetNativeAddress(JNIEnv *env, jobject unsafe, jlong addr, jlong x)) {
 480   void* p = addr_from_java(addr);
 481   *(void**)p = addr_from_java(x);
 482 } UNSAFE_END
 483 
 484 
 485 ////// Allocation requests
 486 
 487 UNSAFE_ENTRY(jobject, Unsafe_AllocateInstance0(JNIEnv *env, jobject unsafe, jclass cls)) {
 488   ThreadToNativeFromVM ttnfv(thread);
 489   return env->AllocObject(cls);
 490 } UNSAFE_END
 491 
 492 UNSAFE_ENTRY(jlong, Unsafe_AllocateMemory0(JNIEnv *env, jobject unsafe, jlong size)) {
 493   size_t sz = (size_t)size;
 494 
 495   sz = round_to(sz, HeapWordSize);
 496   void* x = os::malloc(sz, mtInternal);
 497 
 498   return addr_to_java(x);
 499 } UNSAFE_END
 500 
 501 UNSAFE_ENTRY(jlong, Unsafe_ReallocateMemory0(JNIEnv *env, jobject unsafe, jlong addr, jlong size)) {
 502   void* p = addr_from_java(addr);
 503   size_t sz = (size_t)size;
 504   sz = round_to(sz, HeapWordSize);
 505 
 506   void* x = os::realloc(p, sz, mtInternal);
 507 


1166     DECLARE_GETPUTNATIVE(Float, F),
1167     DECLARE_GETPUTNATIVE(Double, D),
1168 
1169     {CC "getAddress",         CC "(" ADR ")" ADR,        FN_PTR(Unsafe_GetNativeAddress)},
1170     {CC "putAddress",         CC "(" ADR "" ADR ")V",    FN_PTR(Unsafe_SetNativeAddress)},
1171 
1172     {CC "allocateMemory0",    CC "(J)" ADR,              FN_PTR(Unsafe_AllocateMemory0)},
1173     {CC "reallocateMemory0",  CC "(" ADR "J)" ADR,       FN_PTR(Unsafe_ReallocateMemory0)},
1174     {CC "freeMemory0",        CC "(" ADR ")V",           FN_PTR(Unsafe_FreeMemory0)},
1175 
1176     {CC "objectFieldOffset0", CC "(" FLD ")J",           FN_PTR(Unsafe_ObjectFieldOffset0)},
1177     {CC "staticFieldOffset0", CC "(" FLD ")J",           FN_PTR(Unsafe_StaticFieldOffset0)},
1178     {CC "staticFieldBase0",   CC "(" FLD ")" OBJ,        FN_PTR(Unsafe_StaticFieldBase0)},
1179     {CC "ensureClassInitialized0", CC "(" CLS ")V",      FN_PTR(Unsafe_EnsureClassInitialized0)},
1180     {CC "arrayBaseOffset0",   CC "(" CLS ")I",           FN_PTR(Unsafe_ArrayBaseOffset0)},
1181     {CC "arrayIndexScale0",   CC "(" CLS ")I",           FN_PTR(Unsafe_ArrayIndexScale0)},
1182     {CC "addressSize0",       CC "()I",                  FN_PTR(Unsafe_AddressSize0)},
1183     {CC "pageSize",           CC "()I",                  FN_PTR(Unsafe_PageSize)},
1184 
1185     {CC "defineClass0",       CC "(" DC_Args ")" CLS,    FN_PTR(Unsafe_DefineClass0)},
1186     {CC "allocateInstance0",  CC "(" CLS ")" OBJ,        FN_PTR(Unsafe_AllocateInstance0)},
1187     {CC "throwException",     CC "(" THR ")V",           FN_PTR(Unsafe_ThrowException)},
1188     {CC "compareAndSwapObject", CC "(" OBJ "J" OBJ "" OBJ ")Z", FN_PTR(Unsafe_CompareAndSwapObject)},
1189     {CC "compareAndSwapInt",  CC "(" OBJ "J""I""I"")Z",  FN_PTR(Unsafe_CompareAndSwapInt)},
1190     {CC "compareAndSwapLong", CC "(" OBJ "J""J""J"")Z",  FN_PTR(Unsafe_CompareAndSwapLong)},
1191     {CC "compareAndExchangeObjectVolatile", CC "(" OBJ "J" OBJ "" OBJ ")" OBJ, FN_PTR(Unsafe_CompareAndExchangeObject)},
1192     {CC "compareAndExchangeIntVolatile",  CC "(" OBJ "J""I""I"")I", FN_PTR(Unsafe_CompareAndExchangeInt)},
1193     {CC "compareAndExchangeLongVolatile", CC "(" OBJ "J""J""J"")J", FN_PTR(Unsafe_CompareAndExchangeLong)},
1194 
1195     {CC "park",               CC "(ZJ)V",                FN_PTR(Unsafe_Park)},
1196     {CC "unpark",             CC "(" OBJ ")V",           FN_PTR(Unsafe_Unpark)},
1197 
1198     {CC "getLoadAverage0",    CC "([DI)I",               FN_PTR(Unsafe_GetLoadAverage0)},
1199 
1200     {CC "copyMemory0",        CC "(" OBJ "J" OBJ "JJ)V", FN_PTR(Unsafe_CopyMemory0)},
1201     {CC "copySwapMemory0",    CC "(" OBJ "J" OBJ "JJJ)V", FN_PTR(Unsafe_CopySwapMemory0)},
1202     {CC "setMemory0",         CC "(" OBJ "JJB)V",        FN_PTR(Unsafe_SetMemory0)},
1203 
1204     {CC "defineAnonymousClass0", CC "(" DAC_Args ")" CLS, FN_PTR(Unsafe_DefineAnonymousClass0)},
1205 
1206     {CC "shouldBeInitialized0", CC "(" CLS ")Z",         FN_PTR(Unsafe_ShouldBeInitialized0)},


src/share/vm/prims/unsafe.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File