494 } else { 495 decode_offset = pc_desc->scope_decode_offset(); 496 } 497 fill_from_compiled_frame(decode_offset); 498 } 499 return true; 500 } 501 502 // End of stack? 503 if (_frame.is_first_frame() || (_stop_at_java_call_stub && _frame.is_entry_frame())) { 504 _mode = at_end_mode; 505 return true; 506 } 507 508 return false; 509 } 510 511 512 inline void vframeStreamCommon::fill_from_interpreter_frame() { 513 Method* method = _frame.interpreter_frame_method(); 514 intptr_t bcx = _frame.interpreter_frame_bcx(); 515 int bci = method->validate_bci_from_bcx(bcx); 516 // 6379830 AsyncGetCallTrace sometimes feeds us wild frames. 517 if (bci < 0) { 518 found_bad_method_frame(); 519 bci = 0; // pretend it's on the point of entering 520 } 521 _mode = interpreted_mode; 522 _method = method; 523 _bci = bci; 524 } 525 526 #endif // SHARE_VM_RUNTIME_VFRAME_HPP | 494 } else { 495 decode_offset = pc_desc->scope_decode_offset(); 496 } 497 fill_from_compiled_frame(decode_offset); 498 } 499 return true; 500 } 501 502 // End of stack? 503 if (_frame.is_first_frame() || (_stop_at_java_call_stub && _frame.is_entry_frame())) { 504 _mode = at_end_mode; 505 return true; 506 } 507 508 return false; 509 } 510 511 512 inline void vframeStreamCommon::fill_from_interpreter_frame() { 513 Method* method = _frame.interpreter_frame_method(); 514 address bcp = _frame.interpreter_frame_bcp(); 515 int bci = method->validate_bci_from_bcp(bcp); 516 // 6379830 AsyncGetCallTrace sometimes feeds us wild frames. 517 if (bci < 0) { 518 found_bad_method_frame(); 519 bci = 0; // pretend it's on the point of entering 520 } 521 _mode = interpreted_mode; 522 _method = method; 523 _bci = bci; 524 } 525 526 #endif // SHARE_VM_RUNTIME_VFRAME_HPP |