src/cpu/mips/vm/sharedRuntime_mips_64.cpp

changeset 375
fb7da68ac0c3
parent 373
3a34fc828b4a
child 376
030cb2764106
equal deleted inserted replaced
374:09f8c0c1f722 375:fb7da68ac0c3
3712 // use S7 for fetch_unroll_info returned UnrollBlock 3712 // use S7 for fetch_unroll_info returned UnrollBlock
3713 Register unroll = S7; 3713 Register unroll = S7;
3714 // Prolog for non exception case! 3714 // Prolog for non exception case!
3715 // Correct the return address we were given. 3715 // Correct the return address we were given.
3716 //FIXME, return address is on the tos or Ra? 3716 //FIXME, return address is on the tos or Ra?
3717 __ addi(RA, RA, - (NativeCall::return_address_offset_short)); 3717 __ addi(RA, RA, - (NativeCall::return_address_offset_long));
3718 // Save everything in sight. 3718 // Save everything in sight.
3719 map = RegisterSaver::save_live_registers(masm, additional_words, &frame_size_in_words); 3719 map = RegisterSaver::save_live_registers(masm, additional_words, &frame_size_in_words);
3720 // Normal deoptimization 3720 // Normal deoptimization
3721 __ move(reason, Deoptimization::Unpack_deopt); 3721 __ move(reason, Deoptimization::Unpack_deopt);
3722 __ b(cont); 3722 __ b(cont);
3756 3756
3757 // Return address will be patched later with the throwing pc. The correct value is not 3757 // Return address will be patched later with the throwing pc. The correct value is not
3758 // available now because loading it from memory would destroy registers. 3758 // available now because loading it from memory would destroy registers.
3759 // Save everything in sight. 3759 // Save everything in sight.
3760 // No need to update map as each call to save_live_registers will produce identical oopmap 3760 // No need to update map as each call to save_live_registers will produce identical oopmap
3761 __ addi(RA, RA, - (NativeCall::return_address_offset_short)); 3761 __ addi(RA, RA, - (NativeCall::return_address_offset_long));
3762 (void) RegisterSaver::save_live_registers(masm, additional_words, &frame_size_in_words); 3762 (void) RegisterSaver::save_live_registers(masm, additional_words, &frame_size_in_words);
3763 3763
3764 // Now it is safe to overwrite any register 3764 // Now it is safe to overwrite any register
3765 // store the correct deoptimization type 3765 // store the correct deoptimization type
3766 __ move(reason, Deoptimization::Unpack_exception); 3766 __ move(reason, Deoptimization::Unpack_exception);

mercurial