src/share/vm/interpreter/bytecodeInterpreter.cpp

changeset 6467
f3806614494a
parent 6461
bdd155477289
child 6470
abe03600372a
     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

mercurial