src/hotspot/cpu/sparc/gc/g1/g1BarrierSetAssembler_sparc.cpp
changeset 50440 cfdd37095f66
parent 50375 bfbe7d8369bb
child 50728 9375184cec98
equal deleted inserted replaced
50439:c5c827f3bf72 50440:cfdd37095f66
   367 
   367 
   368   if (new_val == G0) return;
   368   if (new_val == G0) return;
   369 
   369 
   370   G1BarrierSet* bs = barrier_set_cast<G1BarrierSet>(BarrierSet::barrier_set());
   370   G1BarrierSet* bs = barrier_set_cast<G1BarrierSet>(BarrierSet::barrier_set());
   371 
   371 
   372   if (G1RSBarrierRegionFilter) {
   372   __ xor3(store_addr, new_val, tmp);
   373     __ xor3(store_addr, new_val, tmp);
   373   __ srlx(tmp, HeapRegion::LogOfHRGrainBytes, tmp);
   374     __ srlx(tmp, HeapRegion::LogOfHRGrainBytes, tmp);
   374 
   375 
   375   __ cmp_and_brx_short(tmp, G0, Assembler::equal, Assembler::pt, filtered);
   376     __ cmp_and_brx_short(tmp, G0, Assembler::equal, Assembler::pt, filtered);
       
   377   }
       
   378 
   376 
   379   // If the "store_addr" register is an "in" or "local" register, move it to
   377   // If the "store_addr" register is an "in" or "local" register, move it to
   380   // a scratch reg so we can pass it as an argument.
   378   // a scratch reg so we can pass it as an argument.
   381   bool use_scr = !(store_addr->is_global() || store_addr->is_out());
   379   bool use_scr = !(store_addr->is_global() || store_addr->is_out());
   382   // Pick a scratch register different from "tmp".
   380   // Pick a scratch register different from "tmp".