4072 // exit_globals() will delete tty
4073 exit_globals();
4074
4075 LogConfiguration::finalize();
4076
4077 return true;
4078 }
4079
4080
4081 jboolean Threads::is_supported_jni_version_including_1_1(jint version) {
4082 if (version == JNI_VERSION_1_1) return JNI_TRUE;
4083 return is_supported_jni_version(version);
4084 }
4085
4086
4087 jboolean Threads::is_supported_jni_version(jint version) {
4088 if (version == JNI_VERSION_1_2) return JNI_TRUE;
4089 if (version == JNI_VERSION_1_4) return JNI_TRUE;
4090 if (version == JNI_VERSION_1_6) return JNI_TRUE;
4091 if (version == JNI_VERSION_1_8) return JNI_TRUE;
4092 return JNI_FALSE;
4093 }
4094
4095
4096 void Threads::add(JavaThread* p, bool force_daemon) {
4097 // The threads lock must be owned at this point
4098 assert_locked_or_safepoint(Threads_lock);
4099
4100 // See the comment for this method in thread.hpp for its purpose and
4101 // why it is called here.
4102 p->initialize_queues();
4103 p->set_next(_thread_list);
4104 _thread_list = p;
4105 _number_of_threads++;
4106 oop threadObj = p->threadObj();
4107 bool daemon = true;
4108 // Bootstrapping problem: threadObj can be null for initial
4109 // JavaThread (or for threads attached via JNI)
4110 if ((!force_daemon) && (threadObj == NULL || !java_lang_Thread::is_daemon(threadObj))) {
4111 _number_of_non_daemon_threads++;
|
4072 // exit_globals() will delete tty
4073 exit_globals();
4074
4075 LogConfiguration::finalize();
4076
4077 return true;
4078 }
4079
4080
4081 jboolean Threads::is_supported_jni_version_including_1_1(jint version) {
4082 if (version == JNI_VERSION_1_1) return JNI_TRUE;
4083 return is_supported_jni_version(version);
4084 }
4085
4086
4087 jboolean Threads::is_supported_jni_version(jint version) {
4088 if (version == JNI_VERSION_1_2) return JNI_TRUE;
4089 if (version == JNI_VERSION_1_4) return JNI_TRUE;
4090 if (version == JNI_VERSION_1_6) return JNI_TRUE;
4091 if (version == JNI_VERSION_1_8) return JNI_TRUE;
4092 if (version == JNI_VERSION_9_0) return JNI_TRUE;
4093 return JNI_FALSE;
4094 }
4095
4096
4097 void Threads::add(JavaThread* p, bool force_daemon) {
4098 // The threads lock must be owned at this point
4099 assert_locked_or_safepoint(Threads_lock);
4100
4101 // See the comment for this method in thread.hpp for its purpose and
4102 // why it is called here.
4103 p->initialize_queues();
4104 p->set_next(_thread_list);
4105 _thread_list = p;
4106 _number_of_threads++;
4107 oop threadObj = p->threadObj();
4108 bool daemon = true;
4109 // Bootstrapping problem: threadObj can be null for initial
4110 // JavaThread (or for threads attached via JNI)
4111 if ((!force_daemon) && (threadObj == NULL || !java_lang_Thread::is_daemon(threadObj))) {
4112 _number_of_non_daemon_threads++;
|