< prev index next >

src/cpu/aarch64/vm/stubGenerator_aarch64.cpp

Print this page
rev 11804 : 8164113: AArch64: follow-up the fix for 8161598
Reviewed-by: duke


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,


< prev index next >