src/hotspot/share/gc/g1/g1SATBCardTableModRefBS.cpp
changeset 47998 fb0275c320a0
parent 47794 e84aa2c71241
child 48102 08be4c1e540e
equal deleted inserted replaced
47997:55c43e677ded 47998:fb0275c320a0
    71 void G1SATBCardTableModRefBS::write_ref_array_pre(oop* dst, int count, bool dest_uninitialized) {
    71 void G1SATBCardTableModRefBS::write_ref_array_pre(oop* dst, int count, bool dest_uninitialized) {
    72   if (!dest_uninitialized) {
    72   if (!dest_uninitialized) {
    73     write_ref_array_pre_work(dst, count);
    73     write_ref_array_pre_work(dst, count);
    74   }
    74   }
    75 }
    75 }
       
    76 
    76 void G1SATBCardTableModRefBS::write_ref_array_pre(narrowOop* dst, int count, bool dest_uninitialized) {
    77 void G1SATBCardTableModRefBS::write_ref_array_pre(narrowOop* dst, int count, bool dest_uninitialized) {
    77   if (!dest_uninitialized) {
    78   if (!dest_uninitialized) {
    78     write_ref_array_pre_work(dst, count);
    79     write_ref_array_pre_work(dst, count);
    79   }
    80   }
    80 }
    81 }
   152   log_trace(gc, barrier)("    &_byte_map[0]: " INTPTR_FORMAT "  &_byte_map[_last_valid_index]: " INTPTR_FORMAT,
   153   log_trace(gc, barrier)("    &_byte_map[0]: " INTPTR_FORMAT "  &_byte_map[_last_valid_index]: " INTPTR_FORMAT,
   153                          p2i(&_byte_map[0]), p2i(&_byte_map[_last_valid_index]));
   154                          p2i(&_byte_map[0]), p2i(&_byte_map[_last_valid_index]));
   154   log_trace(gc, barrier)("    byte_map_base: " INTPTR_FORMAT,  p2i(byte_map_base));
   155   log_trace(gc, barrier)("    byte_map_base: " INTPTR_FORMAT,  p2i(byte_map_base));
   155 }
   156 }
   156 
   157 
   157 void
   158 void G1SATBCardTableLoggingModRefBS::write_ref_field_post_slow(volatile jbyte* byte) {
   158 G1SATBCardTableLoggingModRefBS::write_ref_field_work(void* field,
   159   // In the slow path, we know a card is not young
   159                                                      oop new_val,
   160   assert(*byte != g1_young_gen, "slow path invoked without filtering");
   160                                                      bool release) {
       
   161   volatile jbyte* byte = byte_for(field);
       
   162   if (*byte == g1_young_gen) {
       
   163     return;
       
   164   }
       
   165   OrderAccess::storeload();
   161   OrderAccess::storeload();
   166   if (*byte != dirty_card) {
   162   if (*byte != dirty_card) {
   167     *byte = dirty_card;
   163     *byte = dirty_card;
   168     Thread* thr = Thread::current();
   164     Thread* thr = Thread::current();
   169     if (thr->is_Java_thread()) {
   165     if (thr->is_Java_thread()) {