src/cpu/sparc/vm/c1_Runtime1_sparc.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File 7008809 Sdiff src/cpu/sparc/vm

src/cpu/sparc/vm/c1_Runtime1_sparc.cpp

Print this page




 692         __ add(I7, frame::pc_return_offset, Oissuing_pc->after_save());
 693 
 694         __ call_VM_leaf(L7_thread_cache, CAST_FROM_FN_PTR(address, SharedRuntime::exception_handler_for_return_address),
 695                         G2_thread, Oissuing_pc->after_save());
 696         __ verify_not_null_oop(Oexception->after_save());
 697 
 698         // Restore SP from L7 if the exception PC is a MethodHandle call site.
 699         __ mov(O0, G5);  // Save the target address.
 700         __ lduw(Address(G2_thread, JavaThread::is_method_handle_return_offset()), L0);
 701         __ tst(L0);  // Condition codes are preserved over the restore.
 702         __ restore();
 703 
 704         __ jmp(G5, 0);
 705         __ delayed()->movcc(Assembler::notZero, false, Assembler::icc, L7_mh_SP_save, SP);  // Restore SP if required.
 706       }
 707       break;
 708 
 709     case throw_array_store_exception_id:
 710       {
 711         __ set_info("throw_array_store_exception", dont_gc_arguments);
 712         oop_maps = generate_exception_throw(sasm, CAST_FROM_FN_PTR(address, throw_array_store_exception), false);
 713       }
 714       break;
 715 
 716     case throw_class_cast_exception_id:
 717       {
 718         // G4: object
 719         __ set_info("throw_class_cast_exception", dont_gc_arguments);
 720         oop_maps = generate_exception_throw(sasm, CAST_FROM_FN_PTR(address, throw_class_cast_exception), true);
 721       }
 722       break;
 723 
 724     case throw_incompatible_class_change_error_id:
 725       {
 726         __ set_info("throw_incompatible_class_cast_exception", dont_gc_arguments);
 727         oop_maps = generate_exception_throw(sasm, CAST_FROM_FN_PTR(address, throw_incompatible_class_change_error), false);
 728       }
 729       break;
 730 
 731     case slow_subtype_check_id:
 732       { // Support for uint StubRoutine::partial_subtype_check( Klass sub, Klass super );




 692         __ add(I7, frame::pc_return_offset, Oissuing_pc->after_save());
 693 
 694         __ call_VM_leaf(L7_thread_cache, CAST_FROM_FN_PTR(address, SharedRuntime::exception_handler_for_return_address),
 695                         G2_thread, Oissuing_pc->after_save());
 696         __ verify_not_null_oop(Oexception->after_save());
 697 
 698         // Restore SP from L7 if the exception PC is a MethodHandle call site.
 699         __ mov(O0, G5);  // Save the target address.
 700         __ lduw(Address(G2_thread, JavaThread::is_method_handle_return_offset()), L0);
 701         __ tst(L0);  // Condition codes are preserved over the restore.
 702         __ restore();
 703 
 704         __ jmp(G5, 0);
 705         __ delayed()->movcc(Assembler::notZero, false, Assembler::icc, L7_mh_SP_save, SP);  // Restore SP if required.
 706       }
 707       break;
 708 
 709     case throw_array_store_exception_id:
 710       {
 711         __ set_info("throw_array_store_exception", dont_gc_arguments);
 712         oop_maps = generate_exception_throw(sasm, CAST_FROM_FN_PTR(address, throw_array_store_exception), true);
 713       }
 714       break;
 715 
 716     case throw_class_cast_exception_id:
 717       {
 718         // G4: object
 719         __ set_info("throw_class_cast_exception", dont_gc_arguments);
 720         oop_maps = generate_exception_throw(sasm, CAST_FROM_FN_PTR(address, throw_class_cast_exception), true);
 721       }
 722       break;
 723 
 724     case throw_incompatible_class_change_error_id:
 725       {
 726         __ set_info("throw_incompatible_class_cast_exception", dont_gc_arguments);
 727         oop_maps = generate_exception_throw(sasm, CAST_FROM_FN_PTR(address, throw_incompatible_class_change_error), false);
 728       }
 729       break;
 730 
 731     case slow_subtype_check_id:
 732       { // Support for uint StubRoutine::partial_subtype_check( Klass sub, Klass super );


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