< prev index next >
src/hotspot/share/prims/jvmtiThreadState.cpp
Print this page
*** 214,230 ****
}
// Helper routine used in several places
int JvmtiThreadState::count_frames() {
guarantee(SafepointSynchronize::is_at_safepoint() ||
! (JavaThread *)Thread::current() == get_thread(),
! "must be current thread or at safepoint");
if (!get_thread()->has_last_Java_frame()) return 0; // no Java frames
! ResourceMark rm;
RegisterMap reg_map(get_thread());
javaVFrame *jvf = get_thread()->last_java_vframe(®_map);
int n = 0;
while (jvf != NULL) {
Method* method = jvf->method();
--- 214,232 ----
}
// Helper routine used in several places
int JvmtiThreadState::count_frames() {
+ Thread *current_thread = Thread::current();
guarantee(SafepointSynchronize::is_at_safepoint() ||
! current_thread == get_thread() ||
! (current_thread->is_Java_thread() && (current_thread == get_thread()->active_handshaker())),
! "must be at safepoint or target thread is suspended");
if (!get_thread()->has_last_Java_frame()) return 0; // no Java frames
! ResourceMark rm(current_thread);
RegisterMap reg_map(get_thread());
javaVFrame *jvf = get_thread()->last_java_vframe(®_map);
int n = 0;
while (jvf != NULL) {
Method* method = jvf->method();
< prev index next >