src/cpu/sparc/vm/methodHandles_sparc.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File 7012914 Cdiff src/cpu/sparc/vm/methodHandles_sparc.cpp

src/cpu/sparc/vm/methodHandles_sparc.cpp

Print this page

        

*** 415,424 **** --- 415,425 ---- guarantee(java_dyn_MethodHandle::vmentry_offset_in_bytes() != 0, "must have offsets"); // Some handy addresses: Address G5_method_fie( G5_method, in_bytes(methodOopDesc::from_interpreted_offset())); + Address G5_method_fce( G5_method, in_bytes(methodOopDesc::from_compiled_offset())); Address G3_mh_vmtarget( G3_method_handle, java_dyn_MethodHandle::vmtarget_offset_in_bytes()); Address G3_dmh_vmindex( G3_method_handle, sun_dyn_DirectMethodHandle::vmindex_offset_in_bytes());
*** 442,457 **** switch ((int) ek) { case _raise_exception: { // 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. assert(raise_exception_method(), "must be set"); ! address c2i_entry = raise_exception_method()->get_c2i_entry(); ! assert(c2i_entry, "method must be linked"); __ mov(O5_savedSP, SP); // Cut the stack back to where the caller started. Label L_no_method; // FIXME: fill in _raise_exception_method with a suitable sun.dyn method --- 443,456 ---- switch ((int) ek) { case _raise_exception: { // Not a real MH entry, but rather shared code for raising an ! // exception. Since we use the compiled entry, arguments are ! // expected in compiler argument registers. assert(raise_exception_method(), "must be set"); ! assert(raise_exception_method()->from_compiled_entry(), "method must be linked"); __ mov(O5_savedSP, SP); // Cut the stack back to where the caller started. Label L_no_method; // FIXME: fill in _raise_exception_method with a suitable sun.dyn method
*** 466,479 **** __ tst(G5_method); __ brx(Assembler::zero, false, Assembler::pn, L_no_method); __ delayed()->nop(); __ verify_oop(G5_method); ! __ jump_to(AddressLiteral(c2i_entry), O3_scratch); __ delayed()->nop(); - // If we get here, the Java runtime did not do its job of creating the exception. // Do something that is at least causes a valid throw from the interpreter. __ bind(L_no_method); __ unimplemented("call throw_WrongMethodType_entry"); } break; --- 465,477 ---- __ tst(G5_method); __ brx(Assembler::zero, false, Assembler::pn, L_no_method); __ delayed()->nop(); __ verify_oop(G5_method); ! __ jump_indirect_to(G5_method_fce, O3_scratch); // jump to compiled entry __ delayed()->nop(); // Do something that is at least causes a valid throw from the interpreter. __ bind(L_no_method); __ unimplemented("call throw_WrongMethodType_entry"); } break;
src/cpu/sparc/vm/methodHandles_sparc.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File