src/cpu/x86/vm/methodHandles_x86.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File
*** old/src/cpu/x86/vm/methodHandles_x86.cpp	Tue Jan  4 04:53:50 2011
--- new/src/cpu/x86/vm/methodHandles_x86.cpp	Tue Jan  4 04:53:49 2011

*** 388,398 **** --- 388,398 ---- //------------------------------------------------------------------------------ // MethodHandles::generate_method_handle_stub // // Generate an "entry" field for a method handle. // This determines how the method handle will respond to calls. - void MethodHandles::generate_method_handle_stub(MacroAssembler* _masm, MethodHandles::EntryKind ek, TRAPS) { // Here is the register state during an interpreted call, // as set up by generate_method_handle_interpreter_entry(): // - rbx: garbage temp (was MethodHandle.invoke methodOop, unused) // - rcx: receiver method handle // - rax: method handle type (only used by the check_mtype entry point)
*** 449,460 **** --- 449,461 ---- { // Not a real MH entry, but rather shared code for raising an // exception. Since we use a C2I adapter to set up the // interpreter state, arguments are expected in compiler // argument registers. ! methodHandle mh(raise_exception_method()); ! address c2i_entry = methodOopDesc::make_adapters(mh, CHECK); ! assert(raise_exception_method(), "must be set"); ! address c2i_entry = raise_exception_method()->get_c2i_entry(); + assert(c2i_entry, "method must be linked"); const Register rdi_pc = rax; __ pop(rdi_pc); // caller PC __ mov(rsp, saved_last_sp); // cut the stack back to where the caller started

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