src/hotspot/cpu/sparc/gc/shared/cardTableBarrierSetAssembler_sparc.cpp
changeset 49754 ee93c1087584
parent 49748 6a880e576856
child 50728 9375184cec98
equal deleted inserted replaced
49753:46f2dc7c4c39 49754:ee93c1087584
    27 #include "asm/macroAssembler.inline.hpp"
    27 #include "asm/macroAssembler.inline.hpp"
    28 #include "gc/shared/barrierSet.hpp"
    28 #include "gc/shared/barrierSet.hpp"
    29 #include "gc/shared/cardTable.hpp"
    29 #include "gc/shared/cardTable.hpp"
    30 #include "gc/shared/cardTableBarrierSet.hpp"
    30 #include "gc/shared/cardTableBarrierSet.hpp"
    31 #include "gc/shared/cardTableBarrierSetAssembler.hpp"
    31 #include "gc/shared/cardTableBarrierSetAssembler.hpp"
    32 #include "gc/shared/collectedHeap.hpp"
       
    33 #include "interpreter/interp_masm.hpp"
    32 #include "interpreter/interp_masm.hpp"
    34 
    33 
    35 #define __ masm->
    34 #define __ masm->
    36 
    35 
    37 #ifdef PRODUCT
    36 #ifdef PRODUCT
    42 
    41 
    43 #define BIND(label) bind(label); BLOCK_COMMENT(#label ":")
    42 #define BIND(label) bind(label); BLOCK_COMMENT(#label ":")
    44 
    43 
    45 void CardTableBarrierSetAssembler::gen_write_ref_array_post_barrier(MacroAssembler* masm, DecoratorSet decorators,
    44 void CardTableBarrierSetAssembler::gen_write_ref_array_post_barrier(MacroAssembler* masm, DecoratorSet decorators,
    46                                                                     Register addr, Register count, Register tmp) {
    45                                                                     Register addr, Register count, Register tmp) {
    47   CardTableBarrierSet* ctbs = barrier_set_cast<CardTableBarrierSet>(Universe::heap()->barrier_set());
    46   CardTableBarrierSet* ctbs = barrier_set_cast<CardTableBarrierSet>(BarrierSet::barrier_set());
    48   CardTable* ct = ctbs->card_table();
    47   CardTable* ct = ctbs->card_table();
    49   assert(sizeof(*ct->byte_map_base()) == sizeof(jbyte), "adjust this code");
    48   assert(sizeof(*ct->byte_map_base()) == sizeof(jbyte), "adjust this code");
    50   assert_different_registers(addr, count, tmp);
    49   assert_different_registers(addr, count, tmp);
    51 
    50 
    52   Label L_loop, L_done;
    51   Label L_loop, L_done;
    81 }
    80 }
    82 
    81 
    83 void CardTableBarrierSetAssembler::card_write_barrier_post(MacroAssembler* masm, Register store_addr, Register new_val, Register tmp) {
    82 void CardTableBarrierSetAssembler::card_write_barrier_post(MacroAssembler* masm, Register store_addr, Register new_val, Register tmp) {
    84   // If we're writing constant NULL, we can skip the write barrier.
    83   // If we're writing constant NULL, we can skip the write barrier.
    85   if (new_val == G0) return;
    84   if (new_val == G0) return;
    86   CardTableBarrierSet* bs = barrier_set_cast<CardTableBarrierSet>(Universe::heap()->barrier_set());
    85   CardTableBarrierSet* bs = barrier_set_cast<CardTableBarrierSet>(BarrierSet::barrier_set());
    87   card_table_write(masm, bs->card_table()->byte_map_base(), tmp, store_addr);
    86   card_table_write(masm, bs->card_table()->byte_map_base(), tmp, store_addr);
    88 }
    87 }
    89 
    88 
    90 void CardTableBarrierSetAssembler::oop_store_at(MacroAssembler* masm, DecoratorSet decorators, BasicType type,
    89 void CardTableBarrierSetAssembler::oop_store_at(MacroAssembler* masm, DecoratorSet decorators, BasicType type,
    91                                                 Register val, Address dst, Register tmp) {
    90                                                 Register val, Address dst, Register tmp) {