src/share/vm/services/attachListener.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File
*** old/src/share/vm/services/attachListener.cpp	Fri Dec 27 13:47:26 2013
--- new/src/share/vm/services/attachListener.cpp	Fri Dec 27 13:47:25 2013

*** 449,467 **** --- 449,491 ---- // operation complete - send result and output to client op->complete(res, &st); } } + bool AttachListener::init_error(TRAPS) { + if (HAS_PENDING_EXCEPTION) { + tty->print_cr("Exception in VM (AttachListener::init) : "); + java_lang_Throwable::print(PENDING_EXCEPTION, tty); + tty->cr(); + + CLEAR_PENDING_EXCEPTION; + + return true; + } else { + return false; + } + } + // Starts the Attach Listener thread void AttachListener::init() { EXCEPTION_MARK; ! Klass* k = SystemDictionary::resolve_or_fail(vmSymbols::java_lang_Thread(), true, CHECK); ! Klass* k = SystemDictionary::resolve_or_fail(vmSymbols::java_lang_Thread(), true, THREAD); + if (init_error(THREAD)) { + return; + } + instanceKlassHandle klass (THREAD, k); ! instanceHandle thread_oop = klass->allocate_instance_handle(CHECK); ! instanceHandle thread_oop = klass->allocate_instance_handle(THREAD); + if (init_error(THREAD)) { + return; + } const char thread_name[] = "Attach Listener"; ! Handle string = java_lang_String::create_from_str(thread_name, CHECK); ! Handle string = java_lang_String::create_from_str(thread_name, THREAD); + if (init_error(THREAD)) { + return; + } // Initialize thread_oop to put it into the system threadGroup Handle thread_group (THREAD, Universe::system_thread_group()); JavaValue result(T_VOID); JavaCalls::call_special(&result, thread_oop,
*** 470,486 **** --- 494,504 ---- vmSymbols::threadgroup_string_void_signature(), thread_group, string, THREAD); ! if (HAS_PENDING_EXCEPTION) { tty->print_cr("Exception in VM (AttachListener::init) : "); java_lang_Throwable::print(PENDING_EXCEPTION, tty); tty->cr(); CLEAR_PENDING_EXCEPTION; ! if (init_error(THREAD)) { return; } KlassHandle group(THREAD, SystemDictionary::ThreadGroup_klass()); JavaCalls::call_special(&result,
*** 488,505 **** --- 506,516 ---- group, vmSymbols::add_method_name(), vmSymbols::thread_void_signature(), thread_oop, // ARG 1 THREAD); if (HAS_PENDING_EXCEPTION) { tty->print_cr("Exception in VM (AttachListener::init) : "); java_lang_Throwable::print(PENDING_EXCEPTION, tty); tty->cr(); CLEAR_PENDING_EXCEPTION; + if (init_error(THREAD)) { return; } { MutexLocker mu(Threads_lock); JavaThread* listener_thread = new JavaThread(&attach_listener_thread_entry);

src/share/vm/services/attachListener.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File