comparison src/cpu/sparc/vm/c1_Runtime1_sparc.cpp @ 1579:e9ff18c4ace7

Merge
author jrose
date Wed, 02 Jun 2010 22:45:42 -0700
parents c18cbe5936b8 61b2245abf36
children 126ea7725993
comparison
equal deleted inserted replaced
1562:dfe27f03244a 1579:e9ff18c4ace7
677 __ add(I7, frame::pc_return_offset, Oissuing_pc->after_save()); 677 __ add(I7, frame::pc_return_offset, Oissuing_pc->after_save());
678 678
679 __ call_VM_leaf(L7_thread_cache, CAST_FROM_FN_PTR(address, SharedRuntime::exception_handler_for_return_address), 679 __ call_VM_leaf(L7_thread_cache, CAST_FROM_FN_PTR(address, SharedRuntime::exception_handler_for_return_address),
680 G2_thread, Oissuing_pc->after_save()); 680 G2_thread, Oissuing_pc->after_save());
681 __ verify_not_null_oop(Oexception->after_save()); 681 __ verify_not_null_oop(Oexception->after_save());
682 __ jmp(O0, 0); 682
683 __ delayed()->restore(); 683 // Restore SP from L7 if the exception PC is a MethodHandle call site.
684 __ mov(O0, G5); // Save the target address.
685 __ lduw(Address(G2_thread, JavaThread::is_method_handle_return_offset()), L0);
686 __ tst(L0); // Condition codes are preserved over the restore.
687 __ restore();
688
689 __ jmp(G5, 0);
690 __ delayed()->movcc(Assembler::notZero, false, Assembler::icc, L7_mh_SP_save, SP); // Restore SP if required.
684 } 691 }
685 break; 692 break;
686 693
687 case throw_array_store_exception_id: 694 case throw_array_store_exception_id:
688 { 695 {