src/hotspot/cpu/sparc/stubGenerator_sparc.cpp
changeset 48104 62d5973082e3
parent 47561 f59f0e51ef8a
child 48304 600997105565
child 55974 06122633fead
equal deleted inserted replaced
48103:26dbe08d1c17 48104:62d5973082e3
   896         {
   896         {
   897           CardTableModRefBS* ct = barrier_set_cast<CardTableModRefBS>(bs);
   897           CardTableModRefBS* ct = barrier_set_cast<CardTableModRefBS>(bs);
   898           assert(sizeof(*ct->byte_map_base) == sizeof(jbyte), "adjust this code");
   898           assert(sizeof(*ct->byte_map_base) == sizeof(jbyte), "adjust this code");
   899           assert_different_registers(addr, count, tmp);
   899           assert_different_registers(addr, count, tmp);
   900 
   900 
   901           Label L_loop;
   901           Label L_loop, L_done;
       
   902 
       
   903           __ cmp_and_br_short(count, 0, Assembler::equal, Assembler::pt, L_done); // zero count - nothing to do
   902 
   904 
   903           __ sll_ptr(count, LogBytesPerHeapOop, count);
   905           __ sll_ptr(count, LogBytesPerHeapOop, count);
   904           __ sub(count, BytesPerHeapOop, count);
   906           __ sub(count, BytesPerHeapOop, count);
   905           __ add(count, addr, count);
   907           __ add(count, addr, count);
   906           // Use two shifts to clear out those low order two bits! (Cannot opt. into 1.)
   908           // Use two shifts to clear out those low order two bits! (Cannot opt. into 1.)
   912         __ BIND(L_loop);
   914         __ BIND(L_loop);
   913           __ stb(G0, tmp, addr);
   915           __ stb(G0, tmp, addr);
   914           __ subcc(count, 1, count);
   916           __ subcc(count, 1, count);
   915           __ brx(Assembler::greaterEqual, false, Assembler::pt, L_loop);
   917           __ brx(Assembler::greaterEqual, false, Assembler::pt, L_loop);
   916           __ delayed()->add(addr, 1, addr);
   918           __ delayed()->add(addr, 1, addr);
       
   919         __ BIND(L_done);
   917         }
   920         }
   918         break;
   921         break;
   919       case BarrierSet::ModRef:
   922       case BarrierSet::ModRef:
   920         break;
   923         break;
   921       default:
   924       default: