3784 __ set_last_Java_frame(sp, rfp, (address)NULL, rscratch1);
3785
3786 // Call runtime
3787 if (arg1 != noreg) {
3788 assert(arg2 != c_rarg1, "clobbered");
3789 __ mov(c_rarg1, arg1);
3790 }
3791 if (arg2 != noreg) {
3792 __ mov(c_rarg2, arg2);
3793 }
3794 __ mov(c_rarg0, rthread);
3795 BLOCK_COMMENT("call runtime_entry");
3796 __ mov(rscratch1, runtime_entry);
3797 __ blrt(rscratch1, 3 /* number_of_arguments */, 0, 1);
3798
3799 // Generate oop map
3800 OopMap* map = new OopMap(framesize, 0);
3801
3802 oop_maps->add_gc_map(the_pc - start, map);
3803
3804 __ reset_last_Java_frame(true, true);
3805 __ maybe_isb();
3806
3807 __ leave();
3808
3809 // check for pending exceptions
3810 #ifdef ASSERT
3811 Label L;
3812 __ ldr(rscratch1, Address(rthread, Thread::pending_exception_offset()));
3813 __ cbnz(rscratch1, L);
3814 __ should_not_reach_here();
3815 __ bind(L);
3816 #endif // ASSERT
3817 __ far_jump(RuntimeAddress(StubRoutines::forward_exception_entry()));
3818
3819
3820 // codeBlob framesize is in words (not VMRegImpl::slot_size)
3821 RuntimeStub* stub =
3822 RuntimeStub::new_runtime_stub(name,
3823 &code,
3824 frame_complete,
|
3784 __ set_last_Java_frame(sp, rfp, (address)NULL, rscratch1);
3785
3786 // Call runtime
3787 if (arg1 != noreg) {
3788 assert(arg2 != c_rarg1, "clobbered");
3789 __ mov(c_rarg1, arg1);
3790 }
3791 if (arg2 != noreg) {
3792 __ mov(c_rarg2, arg2);
3793 }
3794 __ mov(c_rarg0, rthread);
3795 BLOCK_COMMENT("call runtime_entry");
3796 __ mov(rscratch1, runtime_entry);
3797 __ blrt(rscratch1, 3 /* number_of_arguments */, 0, 1);
3798
3799 // Generate oop map
3800 OopMap* map = new OopMap(framesize, 0);
3801
3802 oop_maps->add_gc_map(the_pc - start, map);
3803
3804 __ reset_last_Java_frame(true);
3805 __ maybe_isb();
3806
3807 __ leave();
3808
3809 // check for pending exceptions
3810 #ifdef ASSERT
3811 Label L;
3812 __ ldr(rscratch1, Address(rthread, Thread::pending_exception_offset()));
3813 __ cbnz(rscratch1, L);
3814 __ should_not_reach_here();
3815 __ bind(L);
3816 #endif // ASSERT
3817 __ far_jump(RuntimeAddress(StubRoutines::forward_exception_entry()));
3818
3819
3820 // codeBlob framesize is in words (not VMRegImpl::slot_size)
3821 RuntimeStub* stub =
3822 RuntimeStub::new_runtime_stub(name,
3823 &code,
3824 frame_complete,
|