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

src/cpu/sparc/vm/c1_Runtime1_sparc.cpp

Print this page

        

*** 677,688 **** __ add(I7, frame::pc_return_offset, Oissuing_pc->after_save()); __ call_VM_leaf(L7_thread_cache, CAST_FROM_FN_PTR(address, SharedRuntime::exception_handler_for_return_address), G2_thread, Oissuing_pc->after_save()); __ verify_not_null_oop(Oexception->after_save()); ! __ jmp(O0, 0); ! __ delayed()->restore(); } break; case throw_array_store_exception_id: { --- 677,695 ---- __ add(I7, frame::pc_return_offset, Oissuing_pc->after_save()); __ call_VM_leaf(L7_thread_cache, CAST_FROM_FN_PTR(address, SharedRuntime::exception_handler_for_return_address), G2_thread, Oissuing_pc->after_save()); __ verify_not_null_oop(Oexception->after_save()); ! ! // Restore SP from L7 if the exception PC is a MethodHandle call site. ! __ mov(O0, G5); // Save the target address. ! __ lduw(Address(G2_thread, JavaThread::is_method_handle_return_offset()), L0); ! __ tst(L0); // Condition codes are preserved over the restore. ! __ restore(); ! ! __ jmp(G5, 0); ! __ delayed()->movcc(Assembler::notZero, false, Assembler::icc, L7_mh_SP_save, SP); // Restore SP if required. } break; case throw_array_store_exception_id: {
src/cpu/sparc/vm/c1_Runtime1_sparc.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File