1270 MutexLockerEx ml(new Mutex(Mutex::leaf, "SFPT_Test_lock", true, sfpt_check_required),
1271 attemptedNoSafepointValue == JNI_TRUE);
1272 WB_END
1273
1274 WB_ENTRY(jboolean, WB_IsSharedClass(JNIEnv* env, jobject wb, jclass clazz))
1275 return (jboolean)MetaspaceShared::is_in_shared_space(java_lang_Class::as_Klass(JNIHandles::resolve_non_null(clazz)));
1276 WB_END
1277
1278 WB_ENTRY(jboolean, WB_IsMonitorInflated(JNIEnv* env, jobject wb, jobject obj))
1279 oop obj_oop = JNIHandles::resolve(obj);
1280 return (jboolean) obj_oop->mark()->has_monitor();
1281 WB_END
1282
1283 WB_ENTRY(void, WB_ForceSafepoint(JNIEnv* env, jobject wb))
1284 VM_ForceSafepoint force_safepoint_op;
1285 VMThread::execute(&force_safepoint_op);
1286 WB_END
1287
1288 WB_ENTRY(jlong, WB_GetConstantPool(JNIEnv* env, jobject wb, jclass klass))
1289 instanceKlassHandle ikh(java_lang_Class::as_Klass(JNIHandles::resolve(klass)));
1290 return (jlong) ikh->constants();
1291 WB_END
1292
1293 template <typename T>
1294 static bool GetMethodOption(JavaThread* thread, JNIEnv* env, jobject method, jstring name, T* value) {
1295 assert(value != NULL, "sanity");
1296 if (method == NULL || name == NULL) {
1297 return false;
1298 }
1299 jmethodID jmid = reflected_method_to_jmid(thread, env, method);
1300 CHECK_JNI_EXCEPTION_(env, false);
1301 methodHandle mh(thread, Method::checked_resolve_jmethod_id(jmid));
1302 // can't be in VM when we call JNI
1303 ThreadToNativeFromVM ttnfv(thread);
1304 const char* flag_name = env->GetStringUTFChars(name, NULL);
1305 bool result = CompilerOracle::has_option_value(mh, flag_name, *value);
1306 env->ReleaseStringUTFChars(name, flag_name);
1307 return result;
1308 }
1309
1310 WB_ENTRY(jobject, WB_GetMethodBooleaneOption(JNIEnv* env, jobject wb, jobject method, jstring name))
|
1270 MutexLockerEx ml(new Mutex(Mutex::leaf, "SFPT_Test_lock", true, sfpt_check_required),
1271 attemptedNoSafepointValue == JNI_TRUE);
1272 WB_END
1273
1274 WB_ENTRY(jboolean, WB_IsSharedClass(JNIEnv* env, jobject wb, jclass clazz))
1275 return (jboolean)MetaspaceShared::is_in_shared_space(java_lang_Class::as_Klass(JNIHandles::resolve_non_null(clazz)));
1276 WB_END
1277
1278 WB_ENTRY(jboolean, WB_IsMonitorInflated(JNIEnv* env, jobject wb, jobject obj))
1279 oop obj_oop = JNIHandles::resolve(obj);
1280 return (jboolean) obj_oop->mark()->has_monitor();
1281 WB_END
1282
1283 WB_ENTRY(void, WB_ForceSafepoint(JNIEnv* env, jobject wb))
1284 VM_ForceSafepoint force_safepoint_op;
1285 VMThread::execute(&force_safepoint_op);
1286 WB_END
1287
1288 WB_ENTRY(jlong, WB_GetConstantPool(JNIEnv* env, jobject wb, jclass klass))
1289 instanceKlassHandle ikh(java_lang_Class::as_Klass(JNIHandles::resolve(klass)));
1290 return (jlong)(uintptr_t)ikh->constants();
1291 WB_END
1292
1293 template <typename T>
1294 static bool GetMethodOption(JavaThread* thread, JNIEnv* env, jobject method, jstring name, T* value) {
1295 assert(value != NULL, "sanity");
1296 if (method == NULL || name == NULL) {
1297 return false;
1298 }
1299 jmethodID jmid = reflected_method_to_jmid(thread, env, method);
1300 CHECK_JNI_EXCEPTION_(env, false);
1301 methodHandle mh(thread, Method::checked_resolve_jmethod_id(jmid));
1302 // can't be in VM when we call JNI
1303 ThreadToNativeFromVM ttnfv(thread);
1304 const char* flag_name = env->GetStringUTFChars(name, NULL);
1305 bool result = CompilerOracle::has_option_value(mh, flag_name, *value);
1306 env->ReleaseStringUTFChars(name, flag_name);
1307 return result;
1308 }
1309
1310 WB_ENTRY(jobject, WB_GetMethodBooleaneOption(JNIEnv* env, jobject wb, jobject method, jstring name))
|