< prev index next >

src/hotspot/cpu/aarch64/gc/shared/cardTableBarrierSetAssembler_aarch64.cpp

Print this page




  99 
 100   bool needs_post_barrier = val != noreg && in_heap;
 101   BarrierSetAssembler::store_at(masm, decorators, type, dst, val, noreg, noreg, noreg);
 102   if (needs_post_barrier) {
 103     // flatten object address if needed
 104     if (!precise || (dst.index() == noreg && dst.offset() == 0)) {
 105       if (tmp3 != noreg) {
 106         // Called by MacroAssembler::pack_value_helper. We cannot corrupt the dst.base() register
 107         __ mov(tmp3, dst.base());
 108         store_check(masm, tmp3, dst);
 109       } else {
 110         // It's OK to corrupt the dst.base() register.
 111         store_check(masm, dst.base(), dst);
 112       }
 113 
 114     } else {
 115       __ lea(r3, dst);
 116       store_check(masm, r3, dst);
 117     }
 118   }

 119 }


  99 
 100   bool needs_post_barrier = val != noreg && in_heap;
 101   BarrierSetAssembler::store_at(masm, decorators, type, dst, val, noreg, noreg, noreg);
 102   if (needs_post_barrier) {
 103     // flatten object address if needed
 104     if (!precise || (dst.index() == noreg && dst.offset() == 0)) {
 105       if (tmp3 != noreg) {
 106         // Called by MacroAssembler::pack_value_helper. We cannot corrupt the dst.base() register
 107         __ mov(tmp3, dst.base());
 108         store_check(masm, tmp3, dst);
 109       } else {
 110         // It's OK to corrupt the dst.base() register.
 111         store_check(masm, dst.base(), dst);
 112       }
 113 
 114     } else {
 115       __ lea(r3, dst);
 116       store_check(masm, r3, dst);
 117     }
 118   }
 119 
 120 }
< prev index next >