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, 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