--- a/hotspot/src/share/vm/prims/whitebox.cpp Tue Sep 13 11:32:45 2016 +0200
+++ b/hotspot/src/share/vm/prims/whitebox.cpp Tue Sep 13 09:04:44 2016 +0200
@@ -894,6 +894,7 @@
}
ThreadToNativeFromVM ttnfv(thread); // can't be in VM when we call JNI
const char* flag_name = env->GetStringUTFChars(name, NULL);
+ CHECK_JNI_EXCEPTION_(env, false);
Flag::Error result = (*TAt)(flag_name, value, true, true);
env->ReleaseStringUTFChars(name, flag_name);
return (result == Flag::SUCCESS);
@@ -906,6 +907,7 @@
}
ThreadToNativeFromVM ttnfv(thread); // can't be in VM when we call JNI
const char* flag_name = env->GetStringUTFChars(name, NULL);
+ CHECK_JNI_EXCEPTION_(env, false);
Flag::Error result = (*TAtPut)(flag_name, value, Flag::INTERNAL);
env->ReleaseStringUTFChars(name, flag_name);
return (result == Flag::SUCCESS);
@@ -944,6 +946,7 @@
static Flag* getVMFlag(JavaThread* thread, JNIEnv* env, jstring name) {
ThreadToNativeFromVM ttnfv(thread); // can't be in VM when we call JNI
const char* flag_name = env->GetStringUTFChars(name, NULL);
+ CHECK_JNI_EXCEPTION_(env, NULL);
Flag* result = Flag::find_flag(flag_name, strlen(flag_name), true, true);
env->ReleaseStringUTFChars(name, flag_name);
return result;
@@ -1084,7 +1087,14 @@
WB_ENTRY(void, WB_SetStringVMFlag(JNIEnv* env, jobject o, jstring name, jstring value))
ThreadToNativeFromVM ttnfv(thread); // can't be in VM when we call JNI
- const char* ccstrValue = (value == NULL) ? NULL : env->GetStringUTFChars(value, NULL);
+ const char* ccstrValue;
+ if (value == NULL) {
+ ccstrValue = NULL;
+ }
+ else {
+ ccstrValue = env->GetStringUTFChars(value, NULL);
+ CHECK_JNI_EXCEPTION(env);
+ }
ccstr ccstrResult = ccstrValue;
bool needFree;
{
@@ -1308,6 +1318,7 @@
jclass clazz = env->FindClass(vmSymbols::java_lang_Object()->as_C_string());
CHECK_JNI_EXCEPTION_(env, NULL);
result = env->NewObjectArray(blobs.length(), clazz, NULL);
+ CHECK_JNI_EXCEPTION_(env, NULL);
if (result == NULL) {
return result;
}
@@ -1317,6 +1328,7 @@
jobjectArray obj = codeBlob2objectArray(thread, env, *it);
CHECK_JNI_EXCEPTION_(env, NULL);
env->SetObjectArrayElement(result, i, obj);
+ CHECK_JNI_EXCEPTION_(env, NULL);
++i;
}
return result;
@@ -1523,6 +1535,7 @@
// can't be in VM when we call JNI
ThreadToNativeFromVM ttnfv(thread);
const char* flag_name = env->GetStringUTFChars(name, NULL);
+ CHECK_JNI_EXCEPTION_(env, false);
bool result = CompilerOracle::has_option_value(mh, flag_name, *value);
env->ReleaseStringUTFChars(name, flag_name);
return result;
@@ -1678,6 +1691,7 @@
// can't be in VM when we call JNI
ThreadToNativeFromVM ttnfv(thread);
const char* dir = env->GetStringUTFChars(compDirect, NULL);
+ CHECK_JNI_EXCEPTION_(env, 0);
int ret;
{
ThreadInVMfromNative ttvfn(thread); // back to VM