1.1 --- a/src/share/vm/interpreter/bytecodeInterpreter.cpp Thu Sep 12 13:51:13 2013 -0700 1.2 +++ b/src/share/vm/interpreter/bytecodeInterpreter.cpp Fri Sep 13 22:50:47 2013 +0200 1.3 @@ -345,7 +345,9 @@ 1.4 nmethod* osr_nmethod; \ 1.5 OSR_REQUEST(osr_nmethod, branch_pc); \ 1.6 if (osr_nmethod != NULL && osr_nmethod->osr_entry_bci() != InvalidOSREntryBci) { \ 1.7 - intptr_t* buf = SharedRuntime::OSR_migration_begin(THREAD); \ 1.8 + intptr_t* buf; \ 1.9 + /* Call OSR migration with last java frame only, no checks. */ \ 1.10 + CALL_VM_NAKED_LJF(buf=SharedRuntime::OSR_migration_begin(THREAD)); \ 1.11 istate->set_msg(do_osr); \ 1.12 istate->set_osr_buf((address)buf); \ 1.13 istate->set_osr_entry(osr_nmethod->osr_entry()); \ 1.14 @@ -418,13 +420,17 @@ 1.15 CACHE_CP(); \ 1.16 CACHE_LOCALS(); 1.17 1.18 -// Call the VM don't check for pending exceptions 1.19 -#define CALL_VM_NOCHECK(func) \ 1.20 +// Call the VM with last java frame only. 1.21 +#define CALL_VM_NAKED_LJF(func) \ 1.22 DECACHE_STATE(); \ 1.23 SET_LAST_JAVA_FRAME(); \ 1.24 func; \ 1.25 RESET_LAST_JAVA_FRAME(); \ 1.26 - CACHE_STATE(); \ 1.27 + CACHE_STATE(); 1.28 + 1.29 +// Call the VM. Don't check for pending exceptions. 1.30 +#define CALL_VM_NOCHECK(func) \ 1.31 + CALL_VM_NAKED_LJF(func) \ 1.32 if (THREAD->pop_frame_pending() && \ 1.33 !THREAD->pop_frame_in_process()) { \ 1.34 goto handle_Pop_Frame; \ 1.35 @@ -2702,7 +2708,7 @@ 1.36 tty->print_cr("Exception <%s> (" INTPTR_FORMAT ")", except_oop->print_value_string(), except_oop()); 1.37 tty->print_cr(" thrown in interpreter method <%s>", METHOD->print_value_string()); 1.38 tty->print_cr(" at bci %d, continuing at %d for thread " INTPTR_FORMAT, 1.39 - pc - (intptr_t)METHOD->code_base(), 1.40 + istate->bcp() - (intptr_t)METHOD->code_base(), 1.41 continuation_bci, THREAD); 1.42 } 1.43 // for AbortVMOnException flag 1.44 @@ -2715,7 +2721,7 @@ 1.45 tty->print_cr("Exception <%s> (" INTPTR_FORMAT ")", except_oop->print_value_string(), except_oop()); 1.46 tty->print_cr(" thrown in interpreter method <%s>", METHOD->print_value_string()); 1.47 tty->print_cr(" at bci %d, unwinding for thread " INTPTR_FORMAT, 1.48 - pc - (intptr_t) METHOD->code_base(), 1.49 + istate->bcp() - (intptr_t)METHOD->code_base(), 1.50 THREAD); 1.51 } 1.52 // for AbortVMOnException flag