< 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 >