src/hotspot/cpu/sparc/gc/shared/cardTableBarrierSetAssembler_sparc.cpp
changeset 54110 f4f0dce5d0bb
parent 50728 9375184cec98
equal deleted inserted replaced
54109:debb15cc04ee 54110:f4f0dce5d0bb
    42 
    42 
    43 void CardTableBarrierSetAssembler::gen_write_ref_array_post_barrier(MacroAssembler* masm, DecoratorSet decorators,
    43 void CardTableBarrierSetAssembler::gen_write_ref_array_post_barrier(MacroAssembler* masm, DecoratorSet decorators,
    44                                                                     Register addr, Register count, Register tmp) {
    44                                                                     Register addr, Register count, Register tmp) {
    45   CardTableBarrierSet* ctbs = barrier_set_cast<CardTableBarrierSet>(BarrierSet::barrier_set());
    45   CardTableBarrierSet* ctbs = barrier_set_cast<CardTableBarrierSet>(BarrierSet::barrier_set());
    46   CardTable* ct = ctbs->card_table();
    46   CardTable* ct = ctbs->card_table();
    47   assert(sizeof(*ct->byte_map_base()) == sizeof(jbyte), "adjust this code");
       
    48   assert_different_registers(addr, count, tmp);
    47   assert_different_registers(addr, count, tmp);
    49 
    48 
    50   Label L_loop, L_done;
    49   Label L_loop, L_done;
    51 
    50 
    52   __ cmp_and_br_short(count, 0, Assembler::equal, Assembler::pt, L_done); // zero count - nothing to do
    51   __ cmp_and_br_short(count, 0, Assembler::equal, Assembler::pt, L_done); // zero count - nothing to do
    68 
    67 
    69   __ BIND(L_done);
    68   __ BIND(L_done);
    70 }
    69 }
    71 
    70 
    72 void CardTableBarrierSetAssembler::card_table_write(MacroAssembler* masm,
    71 void CardTableBarrierSetAssembler::card_table_write(MacroAssembler* masm,
    73                                                     jbyte* byte_map_base,
    72                                                     CardTable::CardValue* byte_map_base,
    74                                                     Register tmp, Register obj) {
    73                                                     Register tmp, Register obj) {
    75   __ srlx(obj, CardTable::card_shift, obj);
    74   __ srlx(obj, CardTable::card_shift, obj);
    76   assert(tmp != obj, "need separate temp reg");
    75   assert(tmp != obj, "need separate temp reg");
    77   __ set((address) byte_map_base, tmp);
    76   __ set((address) byte_map_base, tmp);
    78   __ stb(G0, tmp, obj);
    77   __ stb(G0, tmp, obj);