352 |
352 |
353 UNSAFE_ENTRY(jobject, Unsafe_GetUncompressedObject(JNIEnv *env, jobject unsafe, jlong addr)) { |
353 UNSAFE_ENTRY(jobject, Unsafe_GetUncompressedObject(JNIEnv *env, jobject unsafe, jlong addr)) { |
354 oop v = *(oop*) (address) addr; |
354 oop v = *(oop*) (address) addr; |
355 |
355 |
356 return JNIHandles::make_local(env, v); |
356 return JNIHandles::make_local(env, v); |
357 } UNSAFE_END |
|
358 |
|
359 UNSAFE_ENTRY(jclass, Unsafe_GetJavaMirror(JNIEnv *env, jobject unsafe, jlong metaspace_klass)) { |
|
360 Klass* klass = (Klass*) (address) metaspace_klass; |
|
361 |
|
362 return (jclass) JNIHandles::make_local(klass->java_mirror()); |
|
363 } UNSAFE_END |
|
364 |
|
365 UNSAFE_ENTRY(jlong, Unsafe_GetKlassPointer(JNIEnv *env, jobject unsafe, jobject obj)) { |
|
366 oop o = JNIHandles::resolve(obj); |
|
367 jlong klass = (jlong) (address) o->klass(); |
|
368 |
|
369 return klass; |
|
370 } UNSAFE_END |
357 } UNSAFE_END |
371 |
358 |
372 #ifndef SUPPORTS_NATIVE_CX8 |
359 #ifndef SUPPORTS_NATIVE_CX8 |
373 |
360 |
374 // VM_Version::supports_cx8() is a surrogate for 'supports atomic long memory ops'. |
361 // VM_Version::supports_cx8() is a surrogate for 'supports atomic long memory ops'. |
1150 {CC "putObject", CC "(" OBJ "J" OBJ ")V", FN_PTR(Unsafe_PutObject)}, |
1137 {CC "putObject", CC "(" OBJ "J" OBJ ")V", FN_PTR(Unsafe_PutObject)}, |
1151 {CC "getObjectVolatile",CC "(" OBJ "J)" OBJ "", FN_PTR(Unsafe_GetObjectVolatile)}, |
1138 {CC "getObjectVolatile",CC "(" OBJ "J)" OBJ "", FN_PTR(Unsafe_GetObjectVolatile)}, |
1152 {CC "putObjectVolatile",CC "(" OBJ "J" OBJ ")V", FN_PTR(Unsafe_PutObjectVolatile)}, |
1139 {CC "putObjectVolatile",CC "(" OBJ "J" OBJ ")V", FN_PTR(Unsafe_PutObjectVolatile)}, |
1153 |
1140 |
1154 {CC "getUncompressedObject", CC "(" ADR ")" OBJ, FN_PTR(Unsafe_GetUncompressedObject)}, |
1141 {CC "getUncompressedObject", CC "(" ADR ")" OBJ, FN_PTR(Unsafe_GetUncompressedObject)}, |
1155 {CC "getJavaMirror", CC "(" ADR ")" CLS, FN_PTR(Unsafe_GetJavaMirror)}, |
|
1156 {CC "getKlassPointer", CC "(" OBJ ")" ADR, FN_PTR(Unsafe_GetKlassPointer)}, |
|
1157 |
1142 |
1158 DECLARE_GETPUTOOP(Boolean, Z), |
1143 DECLARE_GETPUTOOP(Boolean, Z), |
1159 DECLARE_GETPUTOOP(Byte, B), |
1144 DECLARE_GETPUTOOP(Byte, B), |
1160 DECLARE_GETPUTOOP(Short, S), |
1145 DECLARE_GETPUTOOP(Short, S), |
1161 DECLARE_GETPUTOOP(Char, C), |
1146 DECLARE_GETPUTOOP(Char, C), |