< prev index next > src/hotspot/share/services/threadService.cpp
Print this page
}
}
// jdk.internal.vm.ThreadSnapshot support
- #if INCLUDE_JVMTI
class GetThreadSnapshotHandshakeClosure: public HandshakeClosure {
private:
static OopStorage* oop_storage() {
assert(_thread_service_storage != nullptr, "sanity");
Handshake::execute(&cl, thread_oop);
} else {
Handshake::execute(&cl, &tlh, java_thread);
}
+ // thread not alive
+ if (cl._thread_status == JavaThreadStatus::NEW || cl._thread_status == JavaThreadStatus::TERMINATED) {
+ return nullptr;
+ }
+
// StackTrace
InstanceKlass* ste_klass = vmClasses::StackTraceElement_klass();
assert(ste_klass != nullptr, "must be loaded");
objArrayHandle trace = oopFactory::new_objArray_handle(ste_klass, cl._frame_count, CHECK_NULL);
jdk_internal_vm_ThreadSnapshot::set_blocker(snapshot(),
cl._blocker._type, cl._blocker._obj.resolve(), cl._blocker._owner.resolve());
}
return snapshot();
}
-
- #endif // INCLUDE_JVMTI
< prev index next >