< prev index next >

src/hotspot/cpu/arm/gc/g1/g1BarrierSetAssembler_arm.cpp

Print this page
rev 53683 : 8218625: Remove dead code in relocInfo
Reviewed-by: TBD


 201   BarrierSet* bs = BarrierSet::barrier_set();
 202   CardTableBarrierSet* ctbs = barrier_set_cast<CardTableBarrierSet>(bs);
 203   CardTable* ct = ctbs->card_table();
 204   Label done;
 205   Label runtime;
 206 
 207   // Does store cross heap regions?
 208 
 209   __ eor(tmp1, store_addr, new_val);
 210   __ movs(tmp1, AsmOperand(tmp1, lsr, HeapRegion::LogOfHRGrainBytes));
 211   __ b(done, eq);
 212 
 213   // crosses regions, storing NULL?
 214 
 215   __ cbz(new_val, done);
 216 
 217   // storing region crossing non-NULL, is card already dirty?
 218   const Register card_addr = tmp1;
 219   assert(sizeof(*ct->byte_map_base()) == sizeof(jbyte), "adjust this code");
 220 
 221   __ mov_address(tmp2, (address)ct->byte_map_base(), symbolic_Relocation::card_table_reference);
 222   __ add(card_addr, tmp2, AsmOperand(store_addr, lsr, CardTable::card_shift));
 223 
 224   __ ldrb(tmp2, Address(card_addr));
 225   __ cmp(tmp2, (int)G1CardTable::g1_young_card_val());
 226   __ b(done, eq);
 227 
 228   __ membar(MacroAssembler::Membar_mask_bits(MacroAssembler::StoreLoad), tmp2);
 229 
 230   assert(CardTable::dirty_card_val() == 0, "adjust this code");
 231   __ ldrb(tmp2, Address(card_addr));
 232   __ cbz(tmp2, done);
 233 
 234   // storing a region crossing, non-NULL oop, card is clean.
 235   // dirty card and log.
 236 
 237   __ strb(__ zero_register(tmp2), Address(card_addr));
 238 
 239   __ ldr(tmp2, queue_index);
 240   __ ldr(tmp3, buffer);
 241 




 201   BarrierSet* bs = BarrierSet::barrier_set();
 202   CardTableBarrierSet* ctbs = barrier_set_cast<CardTableBarrierSet>(bs);
 203   CardTable* ct = ctbs->card_table();
 204   Label done;
 205   Label runtime;
 206 
 207   // Does store cross heap regions?
 208 
 209   __ eor(tmp1, store_addr, new_val);
 210   __ movs(tmp1, AsmOperand(tmp1, lsr, HeapRegion::LogOfHRGrainBytes));
 211   __ b(done, eq);
 212 
 213   // crosses regions, storing NULL?
 214 
 215   __ cbz(new_val, done);
 216 
 217   // storing region crossing non-NULL, is card already dirty?
 218   const Register card_addr = tmp1;
 219   assert(sizeof(*ct->byte_map_base()) == sizeof(jbyte), "adjust this code");
 220 
 221   __ mov_address(tmp2, (address)ct->byte_map_base());
 222   __ add(card_addr, tmp2, AsmOperand(store_addr, lsr, CardTable::card_shift));
 223 
 224   __ ldrb(tmp2, Address(card_addr));
 225   __ cmp(tmp2, (int)G1CardTable::g1_young_card_val());
 226   __ b(done, eq);
 227 
 228   __ membar(MacroAssembler::Membar_mask_bits(MacroAssembler::StoreLoad), tmp2);
 229 
 230   assert(CardTable::dirty_card_val() == 0, "adjust this code");
 231   __ ldrb(tmp2, Address(card_addr));
 232   __ cbz(tmp2, done);
 233 
 234   // storing a region crossing, non-NULL oop, card is clean.
 235   // dirty card and log.
 236 
 237   __ strb(__ zero_register(tmp2), Address(card_addr));
 238 
 239   __ ldr(tmp2, queue_index);
 240   __ ldr(tmp3, buffer);
 241 


< prev index next >