397
398 JDK_Version::set_runtime_name(get_java_version_info(ik, vmSymbols::java_runtime_name_name()));
399
400 JDK_Version::set_runtime_version(get_java_version_info(ik, vmSymbols::java_runtime_version_name()));
401
402 JDK_Version::set_runtime_vendor_version(get_java_version_info(ik, vmSymbols::java_runtime_vendor_version_name()));
403
404 JDK_Version::set_runtime_vendor_vm_bug_url(get_java_version_info(ik, vmSymbols::java_runtime_vendor_vm_bug_url_name()));
405 }
406
407 // an instance of OutOfMemory exception has been allocated earlier
408 initialize_class(vmSymbols::java_lang_OutOfMemoryError(), CHECK);
409 initialize_class(vmSymbols::java_lang_NullPointerException(), CHECK);
410 initialize_class(vmSymbols::java_lang_ClassCastException(), CHECK);
411 initialize_class(vmSymbols::java_lang_ArrayStoreException(), CHECK);
412 initialize_class(vmSymbols::java_lang_ArithmeticException(), CHECK);
413 initialize_class(vmSymbols::jdk_internal_vm_PreemptedException(), CHECK);
414 initialize_class(vmSymbols::java_lang_ArrayIndexOutOfBoundsException(), CHECK);
415 initialize_class(vmSymbols::java_lang_StackOverflowError(), CHECK);
416 initialize_class(vmSymbols::java_lang_IllegalMonitorStateException(), CHECK);
417 initialize_class(vmSymbols::java_lang_IllegalArgumentException(), CHECK);
418 initialize_class(vmSymbols::java_lang_InternalError(), CHECK);
419 }
420
421 void Threads::initialize_jsr292_core_classes(TRAPS) {
422 TraceTime timer("Initialize java.lang.invoke classes", TRACETIME_LOG(Info, startuptime));
423
424 initialize_class(vmSymbols::java_lang_invoke_MethodHandle(), CHECK);
425 initialize_class(vmSymbols::java_lang_invoke_ResolvedMethodName(), CHECK);
426 initialize_class(vmSymbols::java_lang_invoke_MemberName(), CHECK);
427 initialize_class(vmSymbols::java_lang_invoke_MethodHandleNatives(), CHECK);
428
429 if (UseSharedSpaces) {
430 HeapShared::initialize_java_lang_invoke(CHECK);
431 }
432 }
433
434 // One-shot PeriodicTask subclass for reading the release file
435 class ReadReleaseFileTask : public PeriodicTask {
436 public:
1023 }
1024
1025
1026 jboolean Threads::is_supported_jni_version_including_1_1(jint version) {
1027 if (version == JNI_VERSION_1_1) return JNI_TRUE;
1028 return is_supported_jni_version(version);
1029 }
1030
1031
1032 jboolean Threads::is_supported_jni_version(jint version) {
1033 if (version == JNI_VERSION_1_2) return JNI_TRUE;
1034 if (version == JNI_VERSION_1_4) return JNI_TRUE;
1035 if (version == JNI_VERSION_1_6) return JNI_TRUE;
1036 if (version == JNI_VERSION_1_8) return JNI_TRUE;
1037 if (version == JNI_VERSION_9) return JNI_TRUE;
1038 if (version == JNI_VERSION_10) return JNI_TRUE;
1039 if (version == JNI_VERSION_19) return JNI_TRUE;
1040 if (version == JNI_VERSION_20) return JNI_TRUE;
1041 if (version == JNI_VERSION_21) return JNI_TRUE;
1042 if (version == JNI_VERSION_24) return JNI_TRUE;
1043 return JNI_FALSE;
1044 }
1045
1046 void Threads::add(JavaThread* p, bool force_daemon) {
1047 // The threads lock must be owned at this point
1048 assert(Threads_lock->owned_by_self(), "must have threads lock");
1049 assert(p->monitor_owner_id() != 0, "should be set");
1050
1051 BarrierSet::barrier_set()->on_thread_attach(p);
1052
1053 // Once a JavaThread is added to the Threads list, smr_delete() has
1054 // to be used to delete it. Otherwise we can just delete it directly.
1055 p->set_on_thread_list();
1056
1057 _number_of_threads++;
1058 oop threadObj = p->threadObj();
1059 bool daemon = true;
1060 // Bootstrapping problem: threadObj can be null for initial
1061 // JavaThread (or for threads attached via JNI)
1062 if (!force_daemon &&
|
397
398 JDK_Version::set_runtime_name(get_java_version_info(ik, vmSymbols::java_runtime_name_name()));
399
400 JDK_Version::set_runtime_version(get_java_version_info(ik, vmSymbols::java_runtime_version_name()));
401
402 JDK_Version::set_runtime_vendor_version(get_java_version_info(ik, vmSymbols::java_runtime_vendor_version_name()));
403
404 JDK_Version::set_runtime_vendor_vm_bug_url(get_java_version_info(ik, vmSymbols::java_runtime_vendor_vm_bug_url_name()));
405 }
406
407 // an instance of OutOfMemory exception has been allocated earlier
408 initialize_class(vmSymbols::java_lang_OutOfMemoryError(), CHECK);
409 initialize_class(vmSymbols::java_lang_NullPointerException(), CHECK);
410 initialize_class(vmSymbols::java_lang_ClassCastException(), CHECK);
411 initialize_class(vmSymbols::java_lang_ArrayStoreException(), CHECK);
412 initialize_class(vmSymbols::java_lang_ArithmeticException(), CHECK);
413 initialize_class(vmSymbols::jdk_internal_vm_PreemptedException(), CHECK);
414 initialize_class(vmSymbols::java_lang_ArrayIndexOutOfBoundsException(), CHECK);
415 initialize_class(vmSymbols::java_lang_StackOverflowError(), CHECK);
416 initialize_class(vmSymbols::java_lang_IllegalMonitorStateException(), CHECK);
417 initialize_class(vmSymbols::java_lang_IdentityException(), CHECK);
418 initialize_class(vmSymbols::java_lang_IllegalArgumentException(), CHECK);
419 initialize_class(vmSymbols::java_lang_InternalError(), CHECK);
420 }
421
422 void Threads::initialize_jsr292_core_classes(TRAPS) {
423 TraceTime timer("Initialize java.lang.invoke classes", TRACETIME_LOG(Info, startuptime));
424
425 initialize_class(vmSymbols::java_lang_invoke_MethodHandle(), CHECK);
426 initialize_class(vmSymbols::java_lang_invoke_ResolvedMethodName(), CHECK);
427 initialize_class(vmSymbols::java_lang_invoke_MemberName(), CHECK);
428 initialize_class(vmSymbols::java_lang_invoke_MethodHandleNatives(), CHECK);
429
430 if (UseSharedSpaces) {
431 HeapShared::initialize_java_lang_invoke(CHECK);
432 }
433 }
434
435 // One-shot PeriodicTask subclass for reading the release file
436 class ReadReleaseFileTask : public PeriodicTask {
437 public:
1024 }
1025
1026
1027 jboolean Threads::is_supported_jni_version_including_1_1(jint version) {
1028 if (version == JNI_VERSION_1_1) return JNI_TRUE;
1029 return is_supported_jni_version(version);
1030 }
1031
1032
1033 jboolean Threads::is_supported_jni_version(jint version) {
1034 if (version == JNI_VERSION_1_2) return JNI_TRUE;
1035 if (version == JNI_VERSION_1_4) return JNI_TRUE;
1036 if (version == JNI_VERSION_1_6) return JNI_TRUE;
1037 if (version == JNI_VERSION_1_8) return JNI_TRUE;
1038 if (version == JNI_VERSION_9) return JNI_TRUE;
1039 if (version == JNI_VERSION_10) return JNI_TRUE;
1040 if (version == JNI_VERSION_19) return JNI_TRUE;
1041 if (version == JNI_VERSION_20) return JNI_TRUE;
1042 if (version == JNI_VERSION_21) return JNI_TRUE;
1043 if (version == JNI_VERSION_24) return JNI_TRUE;
1044 if (version == JNI_VERSION_28) return JNI_TRUE;
1045 return JNI_FALSE;
1046 }
1047
1048 void Threads::add(JavaThread* p, bool force_daemon) {
1049 // The threads lock must be owned at this point
1050 assert(Threads_lock->owned_by_self(), "must have threads lock");
1051 assert(p->monitor_owner_id() != 0, "should be set");
1052
1053 BarrierSet::barrier_set()->on_thread_attach(p);
1054
1055 // Once a JavaThread is added to the Threads list, smr_delete() has
1056 // to be used to delete it. Otherwise we can just delete it directly.
1057 p->set_on_thread_list();
1058
1059 _number_of_threads++;
1060 oop threadObj = p->threadObj();
1061 bool daemon = true;
1062 // Bootstrapping problem: threadObj can be null for initial
1063 // JavaThread (or for threads attached via JNI)
1064 if (!force_daemon &&
|