8161598: Kitchensink fails: assert(nm->insts_contains(original_pc)) failed: original PC must be in nmethod/CompiledMethod

Skip unwalkable frames in

Reviewed-by: fparain, coleenp, aph
This commit is contained in:
Dean Long 2016-08-16 09:19:13 -07:00
parent 72dcc9193e
commit 6e820bb025
20 changed files with 77 additions and 76 deletions

View file

@ -1330,7 +1330,7 @@ static void check_needs_gc_for_critical_native(MacroAssembler* masm,
__ increment(rsp, wordSize);
__ get_thread(thread);
__ reset_last_Java_frame(thread, false, true);
__ reset_last_Java_frame(thread, false);
save_or_restore_arguments(masm, stack_slots, total_in_args,
arg_save_area, NULL, in_regs, in_sig_bt);
@ -2224,7 +2224,7 @@ nmethod* SharedRuntime::generate_native_wrapper(MacroAssembler* masm,
// We can finally stop using that last_Java_frame we setup ages ago
__ reset_last_Java_frame(thread, false, true);
__ reset_last_Java_frame(thread, false);
// Unpack oop result
if (ret_type == T_OBJECT || ret_type == T_ARRAY) {
@ -2553,7 +2553,7 @@ void SharedRuntime::generate_deopt_blob() {
__ pop(rcx);
__ get_thread(rcx);
__ reset_last_Java_frame(rcx, false, false);
__ reset_last_Java_frame(rcx, false);
// Load UnrollBlock into EDI
__ mov(rdi, rax);
@ -2702,7 +2702,7 @@ void SharedRuntime::generate_deopt_blob() {
__ push(rax);
__ get_thread(rcx);
__ reset_last_Java_frame(rcx, false, false);
__ reset_last_Java_frame(rcx, false);
// Collect return values
__ movptr(rax,Address(rsp, (RegisterSaver::raxOffset() + additional_words + 1)*wordSize));
@ -2806,7 +2806,7 @@ void SharedRuntime::generate_uncommon_trap_blob() {
__ get_thread(rcx);
__ reset_last_Java_frame(rcx, false, false);
__ reset_last_Java_frame(rcx, false);
// Load UnrollBlock into EDI
__ movptr(rdi, rax);
@ -2912,7 +2912,7 @@ void SharedRuntime::generate_uncommon_trap_blob() {
oop_maps->add_gc_map( __ pc()-start, new OopMap( framesize, 0 ) );
__ get_thread(rdi);
__ reset_last_Java_frame(rdi, true, false);
__ reset_last_Java_frame(rdi, true);
// Pop self-frame.
__ leave(); // Epilog!
@ -3007,7 +3007,7 @@ SafepointBlob* SharedRuntime::generate_handler_blob(address call_ptr, int poll_t
// Clear last_Java_sp again
__ get_thread(java_thread);
__ reset_last_Java_frame(java_thread, false, false);
__ reset_last_Java_frame(java_thread, false);
__ cmpptr(Address(java_thread, Thread::pending_exception_offset()), (int32_t)NULL_WORD);
__ jcc(Assembler::equal, noException);
@ -3082,7 +3082,7 @@ RuntimeStub* SharedRuntime::generate_resolve_blob(address destination, const cha
__ addptr(rsp, wordSize);
// clear last_Java_sp
__ reset_last_Java_frame(thread, true, false);
__ reset_last_Java_frame(thread, true);
// check for pending exceptions
Label pending;
__ cmpptr(Address(thread, Thread::pending_exception_offset()), (int32_t)NULL_WORD);