43 assert(this->is_Java_thread(), "must be JavaThread"); |
43 assert(this->is_Java_thread(), "must be JavaThread"); |
44 JavaThread* jt = (JavaThread *)this; |
44 JavaThread* jt = (JavaThread *)this; |
45 |
45 |
46 // If we have a last_Java_frame, then we should use it even if |
46 // If we have a last_Java_frame, then we should use it even if |
47 // isInJava == true. It should be more reliable than ucontext info. |
47 // isInJava == true. It should be more reliable than ucontext info. |
48 if (jt->has_last_Java_frame()) { |
48 if (jt->has_last_Java_frame() && jt->frame_anchor()->walkable()) { |
49 *fr_addr = jt->pd_last_frame(); |
49 *fr_addr = jt->pd_last_frame(); |
50 return true; |
50 return true; |
51 } |
51 } |
52 |
52 |
53 // At this point, we don't have a last_Java_frame, so |
53 // At this point, we don't have a last_Java_frame, so |