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