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