src/cpu/x86/vm/interpreter_x86_64.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File
*** old/src/cpu/x86/vm/interpreter_x86_64.cpp	Thu Oct 22 18:35:27 2009
--- new/src/cpu/x86/vm/interpreter_x86_64.cpp	Thu Oct 22 18:35:27 2009

*** 275,290 **** --- 275,289 ---- // r13: sender SP address entry_point = __ pc(); // abstract method entry // remove return address. Not really needed, since exception // handling throws away expression stack __ pop(rbx); // adjust stack to what a normal return would do ! __ mov(rsp, r13); + // pop return address, reset last_sp to NULL ! __ empty_expression_stack(); + __ restore_bcp(); // rsi must be correct for exception handler (was destroyed) + __ restore_locals(); // make sure locals pointer is correct as well (was destroyed) // throw exception __ call_VM(noreg, CAST_FROM_FN_PTR(address, InterpreterRuntime::throw_AbstractMethodError)); // the call_VM checks for exception, so we should never return here.
*** 298,308 **** --- 297,310 ---- // Dispatch a method of the form java.dyn.MethodHandles::invoke(...) address InterpreterGenerator::generate_method_handle_entry(void) { if (!EnableMethodHandles) { return generate_abstract_entry(); } return generate_abstract_entry(); //6815692// + + address entry_point = MethodHandles::generate_method_handle_interpreter_entry(_masm); + + return entry_point; } // Empty method, generate a very fast return.

src/cpu/x86/vm/interpreter_x86_64.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File