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
|