--- old/src/hotspot/share/prims/jni.cpp 2017-10-26 15:24:36.359954167 -0400 +++ new/src/hotspot/share/prims/jni.cpp 2017-10-26 15:24:35.873867806 -0400 @@ -25,6 +25,7 @@ #include "precompiled.hpp" #include "jni.h" +#include "jvm.h" #include "ci/ciReplay.hpp" #include "classfile/altHashing.hpp" #include "classfile/classFileStream.hpp" @@ -55,7 +56,6 @@ #include "prims/jniCheck.hpp" #include "prims/jniExport.hpp" #include "prims/jniFastGetField.hpp" -#include "prims/jvm.h" #include "prims/jvm_misc.hpp" #include "prims/jvmtiExport.hpp" #include "prims/jvmtiThreadState.hpp" @@ -263,7 +263,7 @@ #ifdef ASSERT Histogram* JNIHistogram; - static volatile jint JNIHistogram_lock = 0; + static volatile int JNIHistogram_lock = 0; class JNIHistogramElement : public HistogramElement { public: @@ -3277,9 +3277,9 @@ // Initialization state for three routines below relating to // java.nio.DirectBuffers -static jint directBufferSupportInitializeStarted = 0; -static volatile jint directBufferSupportInitializeEnded = 0; -static volatile jint directBufferSupportInitializeFailed = 0; +static int directBufferSupportInitializeStarted = 0; +static volatile int directBufferSupportInitializeEnded = 0; +static volatile int directBufferSupportInitializeFailed = 0; static jclass bufferClass = NULL; static jclass directBufferClass = NULL; static jclass directByteBufferClass = NULL; @@ -3844,9 +3844,9 @@ extern const struct JNIInvokeInterface_ jni_InvokeInterface; // Global invocation API vars -volatile jint vm_created = 0; +volatile int vm_created = 0; // Indicate whether it is safe to recreate VM -volatile jint safe_to_recreate_vm = 1; +volatile int safe_to_recreate_vm = 1; struct JavaVM_ main_vm = {&jni_InvokeInterface}; @@ -4045,7 +4045,7 @@ HOTSPOT_JNI_GETCREATEDJAVAVMS_ENTRY((void **) vm_buf, bufLen, (uintptr_t *) numVMs); - if (vm_created) { + if (vm_created == 1) { if (numVMs != NULL) *numVMs = 1; if (bufLen > 0) *vm_buf = (JavaVM *)(&main_vm); } else { @@ -4065,7 +4065,7 @@ jint res = JNI_ERR; DT_RETURN_MARK(DestroyJavaVM, jint, (const jint&)res); - if (!vm_created) { + if (vm_created == 0) { res = JNI_ERR; return res; } @@ -4086,7 +4086,7 @@ ThreadStateTransition::transition_from_native(thread, _thread_in_vm); if (Threads::destroy_vm()) { // Should not change thread state, VM is gone - vm_created = false; + vm_created = 0; res = JNI_OK; return res; } else { @@ -4226,7 +4226,7 @@ jint JNICALL jni_AttachCurrentThread(JavaVM *vm, void **penv, void *_args) { HOTSPOT_JNI_ATTACHCURRENTTHREAD_ENTRY(vm, penv, _args); - if (!vm_created) { + if (vm_created == 0) { HOTSPOT_JNI_ATTACHCURRENTTHREAD_RETURN((uint32_t) JNI_ERR); return JNI_ERR; } @@ -4285,7 +4285,7 @@ jint ret = JNI_ERR; DT_RETURN_MARK(GetEnv, jint, (const jint&)ret); - if (!vm_created) { + if (vm_created == 0) { *penv = NULL; ret = JNI_EDETACHED; return ret; @@ -4336,7 +4336,7 @@ jint JNICALL jni_AttachCurrentThreadAsDaemon(JavaVM *vm, void **penv, void *_args) { HOTSPOT_JNI_ATTACHCURRENTTHREADASDAEMON_ENTRY(vm, penv, _args); - if (!vm_created) { + if (vm_created == 0) { HOTSPOT_JNI_ATTACHCURRENTTHREADASDAEMON_RETURN((uint32_t) JNI_ERR); return JNI_ERR; }