< prev index next >

src/share/vm/runtime/thread.cpp

Print this page

        

*** 948,978 **** // Creates the initial ThreadGroup static Handle create_initial_thread_group(TRAPS) { Klass* k = SystemDictionary::resolve_or_fail(vmSymbols::java_lang_ThreadGroup(), true, CHECK_NH); ! instanceKlassHandle klass (THREAD, k); ! Handle system_instance = klass->allocate_instance_handle(CHECK_NH); { JavaValue result(T_VOID); JavaCalls::call_special(&result, system_instance, ! klass, vmSymbols::object_initializer_name(), vmSymbols::void_method_signature(), CHECK_NH); } Universe::set_system_thread_group(system_instance()); ! Handle main_instance = klass->allocate_instance_handle(CHECK_NH); { JavaValue result(T_VOID); Handle string = java_lang_String::create_from_str("main", CHECK_NH); JavaCalls::call_special(&result, main_instance, ! klass, vmSymbols::object_initializer_name(), vmSymbols::threadgroup_string_void_signature(), system_instance, string, CHECK_NH); --- 948,978 ---- // Creates the initial ThreadGroup static Handle create_initial_thread_group(TRAPS) { Klass* k = SystemDictionary::resolve_or_fail(vmSymbols::java_lang_ThreadGroup(), true, CHECK_NH); ! InstanceKlass* ik = InstanceKlass::cast(k); ! Handle system_instance = ik->allocate_instance_handle(CHECK_NH); { JavaValue result(T_VOID); JavaCalls::call_special(&result, system_instance, ! ik, vmSymbols::object_initializer_name(), vmSymbols::void_method_signature(), CHECK_NH); } Universe::set_system_thread_group(system_instance()); ! Handle main_instance = ik->allocate_instance_handle(CHECK_NH); { JavaValue result(T_VOID); Handle string = java_lang_String::create_from_str("main", CHECK_NH); JavaCalls::call_special(&result, main_instance, ! ik, vmSymbols::object_initializer_name(), vmSymbols::threadgroup_string_void_signature(), system_instance, string, CHECK_NH);
*** 982,1003 **** // Creates the initial Thread static oop create_initial_thread(Handle thread_group, JavaThread* thread, TRAPS) { Klass* k = SystemDictionary::resolve_or_fail(vmSymbols::java_lang_Thread(), true, CHECK_NULL); ! instanceKlassHandle klass (THREAD, k); ! instanceHandle thread_oop = klass->allocate_instance_handle(CHECK_NULL); java_lang_Thread::set_thread(thread_oop(), thread); java_lang_Thread::set_priority(thread_oop(), NormPriority); thread->set_threadObj(thread_oop()); Handle string = java_lang_String::create_from_str("main", CHECK_NULL); JavaValue result(T_VOID); JavaCalls::call_special(&result, thread_oop, ! klass, vmSymbols::object_initializer_name(), vmSymbols::threadgroup_string_void_signature(), thread_group, string, CHECK_NULL); --- 982,1003 ---- // Creates the initial Thread static oop create_initial_thread(Handle thread_group, JavaThread* thread, TRAPS) { Klass* k = SystemDictionary::resolve_or_fail(vmSymbols::java_lang_Thread(), true, CHECK_NULL); ! InstanceKlass* ik = InstanceKlass::cast(k); ! instanceHandle thread_oop = ik->allocate_instance_handle(CHECK_NULL); java_lang_Thread::set_thread(thread_oop(), thread); java_lang_Thread::set_priority(thread_oop(), NormPriority); thread->set_threadObj(thread_oop()); Handle string = java_lang_String::create_from_str("main", CHECK_NULL); JavaValue result(T_VOID); JavaCalls::call_special(&result, thread_oop, ! ik, vmSymbols::object_initializer_name(), vmSymbols::threadgroup_string_void_signature(), thread_group, string, CHECK_NULL);
*** 1052,1064 **** } // General purpose hook into Java code, run once when the VM is initialized. // The Java library method itself may be changed independently from the VM. static void call_postVMInitHook(TRAPS) { ! Klass* k = SystemDictionary::resolve_or_null(vmSymbols::jdk_internal_vm_PostVMInitHook(), THREAD); ! instanceKlassHandle klass (THREAD, k); ! if (klass.not_null()) { JavaValue result(T_VOID); JavaCalls::call_static(&result, klass, vmSymbols::run_method_name(), vmSymbols::void_method_signature(), CHECK); } --- 1052,1063 ---- } // General purpose hook into Java code, run once when the VM is initialized. // The Java library method itself may be changed independently from the VM. static void call_postVMInitHook(TRAPS) { ! Klass* klass = SystemDictionary::resolve_or_null(vmSymbols::jdk_internal_vm_PostVMInitHook(), THREAD); ! if (klass != NULL) { JavaValue result(T_VOID); JavaCalls::call_static(&result, klass, vmSymbols::run_method_name(), vmSymbols::void_method_signature(), CHECK); }
*** 1068,1079 **** // the vm info string ResourceMark rm(THREAD); const char *vm_info = VM_Version::vm_info_string(); // java.lang.System class ! Klass* k = SystemDictionary::resolve_or_fail(vmSymbols::java_lang_System(), true, CHECK); ! instanceKlassHandle klass (THREAD, k); // setProperty arguments Handle key_str = java_lang_String::create_from_str("java.vm.info", CHECK); Handle value_str = java_lang_String::create_from_str(vm_info, CHECK); --- 1067,1077 ---- // the vm info string ResourceMark rm(THREAD); const char *vm_info = VM_Version::vm_info_string(); // java.lang.System class ! Klass* klass = SystemDictionary::resolve_or_fail(vmSymbols::java_lang_System(), true, CHECK); // setProperty arguments Handle key_str = java_lang_String::create_from_str("java.vm.info", CHECK); Handle value_str = java_lang_String::create_from_str(vm_info, CHECK);
*** 1095,1106 **** bool daemon, TRAPS) { assert(thread_group.not_null(), "thread group should be specified"); assert(threadObj() == NULL, "should only create Java thread object once"); Klass* k = SystemDictionary::resolve_or_fail(vmSymbols::java_lang_Thread(), true, CHECK); ! instanceKlassHandle klass (THREAD, k); ! instanceHandle thread_oop = klass->allocate_instance_handle(CHECK); java_lang_Thread::set_thread(thread_oop(), this); java_lang_Thread::set_priority(thread_oop(), NormPriority); set_threadObj(thread_oop()); --- 1093,1104 ---- bool daemon, TRAPS) { assert(thread_group.not_null(), "thread group should be specified"); assert(threadObj() == NULL, "should only create Java thread object once"); Klass* k = SystemDictionary::resolve_or_fail(vmSymbols::java_lang_Thread(), true, CHECK); ! InstanceKlass* ik = InstanceKlass::cast(k); ! instanceHandle thread_oop = ik->allocate_instance_handle(CHECK); java_lang_Thread::set_thread(thread_oop(), this); java_lang_Thread::set_priority(thread_oop(), NormPriority); set_threadObj(thread_oop());
*** 1108,1129 **** if (thread_name != NULL) { Handle name = java_lang_String::create_from_str(thread_name, CHECK); // Thread gets assigned specified name and null target JavaCalls::call_special(&result, thread_oop, ! klass, vmSymbols::object_initializer_name(), vmSymbols::threadgroup_string_void_signature(), thread_group, // Argument 1 name, // Argument 2 THREAD); } else { // Thread gets assigned name "Thread-nnn" and null target // (java.lang.Thread doesn't have a constructor taking only a ThreadGroup argument) JavaCalls::call_special(&result, thread_oop, ! klass, vmSymbols::object_initializer_name(), vmSymbols::threadgroup_runnable_void_signature(), thread_group, // Argument 1 Handle(), // Argument 2 THREAD); --- 1106,1127 ---- if (thread_name != NULL) { Handle name = java_lang_String::create_from_str(thread_name, CHECK); // Thread gets assigned specified name and null target JavaCalls::call_special(&result, thread_oop, ! ik, vmSymbols::object_initializer_name(), vmSymbols::threadgroup_string_void_signature(), thread_group, // Argument 1 name, // Argument 2 THREAD); } else { // Thread gets assigned name "Thread-nnn" and null target // (java.lang.Thread doesn't have a constructor taking only a ThreadGroup argument) JavaCalls::call_special(&result, thread_oop, ! ik, vmSymbols::object_initializer_name(), vmSymbols::threadgroup_runnable_void_signature(), thread_group, // Argument 1 Handle(), // Argument 2 THREAD);
*** 1136,1146 **** if (HAS_PENDING_EXCEPTION) { return; } ! KlassHandle group(THREAD, SystemDictionary::ThreadGroup_klass()); Handle threadObj(THREAD, this->threadObj()); JavaCalls::call_special(&result, thread_group, group, --- 1134,1144 ---- if (HAS_PENDING_EXCEPTION) { return; } ! Klass* group = SystemDictionary::ThreadGroup_klass(); Handle threadObj(THREAD, this->threadObj()); JavaCalls::call_special(&result, thread_group, group,
*** 1777,1787 **** } if (!destroy_vm) { if (uncaught_exception.not_null()) { EXCEPTION_MARK; // Call method Thread.dispatchUncaughtException(). ! KlassHandle thread_klass(THREAD, SystemDictionary::Thread_klass()); JavaValue result(T_VOID); JavaCalls::call_virtual(&result, threadObj, thread_klass, vmSymbols::dispatchUncaughtException_name(), vmSymbols::throwable_void_signature(), --- 1775,1785 ---- } if (!destroy_vm) { if (uncaught_exception.not_null()) { EXCEPTION_MARK; // Call method Thread.dispatchUncaughtException(). ! Klass* thread_klass = SystemDictionary::Thread_klass(); JavaValue result(T_VOID); JavaCalls::call_virtual(&result, threadObj, thread_klass, vmSymbols::dispatchUncaughtException_name(), vmSymbols::throwable_void_signature(),
*** 1815,1825 **** if (!is_Compiler_thread()) { int count = 3; while (java_lang_Thread::threadGroup(threadObj()) != NULL && (count-- > 0)) { EXCEPTION_MARK; JavaValue result(T_VOID); ! KlassHandle thread_klass(THREAD, SystemDictionary::Thread_klass()); JavaCalls::call_virtual(&result, threadObj, thread_klass, vmSymbols::exit_method_name(), vmSymbols::void_method_signature(), THREAD); --- 1813,1823 ---- if (!is_Compiler_thread()) { int count = 3; while (java_lang_Thread::threadGroup(threadObj()) != NULL && (count-- > 0)) { EXCEPTION_MARK; JavaValue result(T_VOID); ! Klass* thread_klass = SystemDictionary::Thread_klass(); JavaCalls::call_virtual(&result, threadObj, thread_klass, vmSymbols::exit_method_name(), vmSymbols::void_method_signature(), THREAD);
*** 3386,3398 **** // // System.initPhase1 initializes the system properties, the static // fields in, out, and err. Set up java signal handlers, OS-specific // system settings, and thread group of the main thread. static void call_initPhase1(TRAPS) { ! Klass* k = SystemDictionary::resolve_or_fail(vmSymbols::java_lang_System(), true, CHECK); ! instanceKlassHandle klass (THREAD, k); ! JavaValue result(T_VOID); JavaCalls::call_static(&result, klass, vmSymbols::initPhase1_name(), vmSymbols::void_method_signature(), CHECK); } --- 3384,3394 ---- // // System.initPhase1 initializes the system properties, the static // fields in, out, and err. Set up java signal handlers, OS-specific // system settings, and thread group of the main thread. static void call_initPhase1(TRAPS) { ! Klass* klass = SystemDictionary::resolve_or_fail(vmSymbols::java_lang_System(), true, CHECK); JavaValue result(T_VOID); JavaCalls::call_static(&result, klass, vmSymbols::initPhase1_name(), vmSymbols::void_method_signature(), CHECK); }
*** 3408,3419 **** // // After phase 2, The VM will begin search classes from -Xbootclasspath/a. static void call_initPhase2(TRAPS) { TraceTime timer("Phase2 initialization", TRACETIME_LOG(Info, modules, startuptime)); ! Klass* k = SystemDictionary::resolve_or_fail(vmSymbols::java_lang_System(), true, CHECK); ! instanceKlassHandle klass (THREAD, k); JavaValue result(T_VOID); JavaCalls::call_static(&result, klass, vmSymbols::initPhase2_name(), vmSymbols::void_method_signature(), CHECK); universe_post_module_init(); --- 3404,3414 ---- // // After phase 2, The VM will begin search classes from -Xbootclasspath/a. static void call_initPhase2(TRAPS) { TraceTime timer("Phase2 initialization", TRACETIME_LOG(Info, modules, startuptime)); ! Klass* klass = SystemDictionary::resolve_or_fail(vmSymbols::java_lang_System(), true, CHECK); JavaValue result(T_VOID); JavaCalls::call_static(&result, klass, vmSymbols::initPhase2_name(), vmSymbols::void_method_signature(), CHECK); universe_post_module_init();
*** 3424,3436 **** // This will instantiate and set the security manager, set the system class // loader as well as the thread context class loader. The security manager // and system class loader may be a custom class loaded from -Xbootclasspath/a, // other modules or the application's classpath. static void call_initPhase3(TRAPS) { ! Klass* k = SystemDictionary::resolve_or_fail(vmSymbols::java_lang_System(), true, CHECK); ! instanceKlassHandle klass (THREAD, k); ! JavaValue result(T_VOID); JavaCalls::call_static(&result, klass, vmSymbols::initPhase3_name(), vmSymbols::void_method_signature(), CHECK); } --- 3419,3429 ---- // This will instantiate and set the security manager, set the system class // loader as well as the thread context class loader. The security manager // and system class loader may be a custom class loaded from -Xbootclasspath/a, // other modules or the application's classpath. static void call_initPhase3(TRAPS) { ! Klass* klass = SystemDictionary::resolve_or_fail(vmSymbols::java_lang_System(), true, CHECK); JavaValue result(T_VOID); JavaCalls::call_static(&result, klass, vmSymbols::initPhase3_name(), vmSymbols::void_method_signature(), CHECK); }
*** 4062,4083 **** if (this->has_pending_exception()) { this->clear_pending_exception(); } EXCEPTION_MARK; ! Klass* k = SystemDictionary::resolve_or_null(vmSymbols::java_lang_Shutdown(), THREAD); ! if (k != NULL) { // SystemDictionary::resolve_or_null will return null if there was // an exception. If we cannot load the Shutdown class, just don't // call Shutdown.shutdown() at all. This will mean the shutdown hooks // and finalizers (if runFinalizersOnExit is set) won't be run. // Note that if a shutdown hook was registered or runFinalizersOnExit // was called, the Shutdown class would have already been loaded // (Runtime.addShutdownHook and runFinalizersOnExit will load it). - instanceKlassHandle shutdown_klass (THREAD, k); JavaValue result(T_VOID); JavaCalls::call_static(&result, shutdown_klass, vmSymbols::shutdown_method_name(), vmSymbols::void_method_signature(), --- 4055,4075 ---- if (this->has_pending_exception()) { this->clear_pending_exception(); } EXCEPTION_MARK; ! Klass* shutdown_klass = SystemDictionary::resolve_or_null(vmSymbols::java_lang_Shutdown(), THREAD); ! if (shutdown_klass != NULL) { // SystemDictionary::resolve_or_null will return null if there was // an exception. If we cannot load the Shutdown class, just don't // call Shutdown.shutdown() at all. This will mean the shutdown hooks // and finalizers (if runFinalizersOnExit is set) won't be run. // Note that if a shutdown hook was registered or runFinalizersOnExit // was called, the Shutdown class would have already been loaded // (Runtime.addShutdownHook and runFinalizersOnExit will load it). JavaValue result(T_VOID); JavaCalls::call_static(&result, shutdown_klass, vmSymbols::shutdown_method_name(), vmSymbols::void_method_signature(),
< prev index next >