< prev index next >

src/hotspot/cpu/aarch64/gc/z/zBarrierSetAssembler_aarch64.cpp

Print this page

414     if (_ref != r0) {
415       __ mov(_ref, r0);
416     }
417   }
418 };
419 
420 #undef __
421 #define __ masm->
422 
423 void ZBarrierSetAssembler::generate_c2_load_barrier_stub(MacroAssembler* masm, ZLoadBarrierStubC2* stub) const {
424   BLOCK_COMMENT("ZLoadBarrierStubC2");
425 
426   // Stub entry
427   __ bind(*stub->entry());
428 
429   {
430     ZSaveLiveRegisters save_live_registers(masm, stub);
431     ZSetupArguments setup_arguments(masm, stub);
432     __ mov(rscratch1, stub->slow_path());
433     __ blr(rscratch1);





434   }
435 
436   // Stub exit
437   __ b(*stub->continuation());
438 }
439 
440 #undef __
441 
442 #endif // COMPILER2

414     if (_ref != r0) {
415       __ mov(_ref, r0);
416     }
417   }
418 };
419 
420 #undef __
421 #define __ masm->
422 
423 void ZBarrierSetAssembler::generate_c2_load_barrier_stub(MacroAssembler* masm, ZLoadBarrierStubC2* stub) const {
424   BLOCK_COMMENT("ZLoadBarrierStubC2");
425 
426   // Stub entry
427   __ bind(*stub->entry());
428 
429   {
430     ZSaveLiveRegisters save_live_registers(masm, stub);
431     ZSetupArguments setup_arguments(masm, stub);
432     __ mov(rscratch1, stub->slow_path());
433     __ blr(rscratch1);
434     if (UseSVE > 0) {
435       // Reinitialize the ptrue predicate register, in case the external runtime
436       // call clobbers ptrue reg, as we may return to SVE compiled code.
437       __ reinitialize_ptrue();
438     }
439   }

440   // Stub exit
441   __ b(*stub->continuation());
442 }
443 
444 #undef __
445 
446 #endif // COMPILER2
< prev index next >