< prev index next >
src/os_cpu/solaris_x86/vm/thread_solaris_x86.cpp
Print this page
*** 43,55 ****
bool JavaThread::pd_get_top_frame(frame* fr_addr,
void* ucontext, bool isInJava) {
assert(this->is_Java_thread(), "must be JavaThread");
JavaThread* jt = (JavaThread *)this;
! // last_Java_frame is always walkable and safe use it if we have it
!
! if (jt->has_last_Java_frame()) {
*fr_addr = jt->pd_last_frame();
return true;
}
ucontext_t* uc = (ucontext_t*) ucontext;
--- 43,54 ----
bool JavaThread::pd_get_top_frame(frame* fr_addr,
void* ucontext, bool isInJava) {
assert(this->is_Java_thread(), "must be JavaThread");
JavaThread* jt = (JavaThread *)this;
! // There is small window where last_Java_frame is not walkable or safe
! if (jt->has_last_Java_frame() && jt->frame_anchor()->walkable()) {
*fr_addr = jt->pd_last_frame();
return true;
}
ucontext_t* uc = (ucontext_t*) ucontext;
< prev index next >