< 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(&reg_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(&reg_map); int n = 0; while (jvf != NULL) { Method* method = jvf->method();
< prev index next >