< prev index next >

src/hotspot/cpu/aarch64/gc/shenandoah/shenandoahBarrierSetAssembler_aarch64.cpp

Print this page
rev 55922 : 8228369: Shenandoah: Refactor LRB C1 stubs
rev 55923 : imported patch JDK-8228369-03.patch


 603   __ str(rscratch2, Address(tmp, 0));
 604   __ b(done);
 605 
 606   __ bind(runtime);
 607   __ push_call_clobbered_registers();
 608   __ load_parameter(0, pre_val);
 609   __ call_VM_leaf(CAST_FROM_FN_PTR(address, ShenandoahRuntime::write_ref_field_pre_entry), pre_val, thread);
 610   __ pop_call_clobbered_registers();
 611   __ bind(done);
 612 
 613   __ epilogue();
 614 }
 615 
 616 void ShenandoahBarrierSetAssembler::generate_c1_load_reference_barrier_runtime_stub(StubAssembler* sasm) {
 617   __ prologue("shenandoah_load_reference_barrier", false);
 618   // arg0 : object to be resolved
 619 
 620   __ push_call_clobbered_registers();
 621   __ load_parameter(0, r0);
 622   __ mov(lr, CAST_FROM_FN_PTR(address, ShenandoahRuntime::load_reference_barrier));
 623   __ blrt(lr, 1, 0, MacroAssembler::ret_type_integral);
 624   __ mov(rscratch1, r0);
 625   __ pop_call_clobbered_registers();
 626   __ mov(r0, rscratch1);
 627 
 628   __ epilogue();
 629 }
 630 
 631 #undef __
 632 
 633 #endif // COMPILER1
 634 
 635 address ShenandoahBarrierSetAssembler::shenandoah_lrb() {
 636   assert(_shenandoah_lrb != NULL, "need load reference barrier stub");
 637   return _shenandoah_lrb;
 638 }
 639 
 640 #define __ cgen->assembler()->
 641 
 642 // Shenandoah load reference barrier.
 643 //




 603   __ str(rscratch2, Address(tmp, 0));
 604   __ b(done);
 605 
 606   __ bind(runtime);
 607   __ push_call_clobbered_registers();
 608   __ load_parameter(0, pre_val);
 609   __ call_VM_leaf(CAST_FROM_FN_PTR(address, ShenandoahRuntime::write_ref_field_pre_entry), pre_val, thread);
 610   __ pop_call_clobbered_registers();
 611   __ bind(done);
 612 
 613   __ epilogue();
 614 }
 615 
 616 void ShenandoahBarrierSetAssembler::generate_c1_load_reference_barrier_runtime_stub(StubAssembler* sasm) {
 617   __ prologue("shenandoah_load_reference_barrier", false);
 618   // arg0 : object to be resolved
 619 
 620   __ push_call_clobbered_registers();
 621   __ load_parameter(0, r0);
 622   __ mov(lr, CAST_FROM_FN_PTR(address, ShenandoahRuntime::load_reference_barrier));
 623   __ blr(lr);
 624   __ mov(rscratch1, r0);
 625   __ pop_call_clobbered_registers();
 626   __ mov(r0, rscratch1);
 627 
 628   __ epilogue();
 629 }
 630 
 631 #undef __
 632 
 633 #endif // COMPILER1
 634 
 635 address ShenandoahBarrierSetAssembler::shenandoah_lrb() {
 636   assert(_shenandoah_lrb != NULL, "need load reference barrier stub");
 637   return _shenandoah_lrb;
 638 }
 639 
 640 #define __ cgen->assembler()->
 641 
 642 // Shenandoah load reference barrier.
 643 //


< prev index next >