hotspot/src/share/vm/gc_implementation/g1/g1RemSet.cpp
changeset 25909 571781915421
parent 24424 2658d7834c6e
child 26160 aba6b01cb988
equal deleted inserted replaced
25908:8adb2fb6fc3c 25909:571781915421
   347   //   is updated immediately.
   347   //   is updated immediately.
   348   DirtyCardQueue into_cset_dcq(&_g1->into_cset_dirty_card_queue_set());
   348   DirtyCardQueue into_cset_dcq(&_g1->into_cset_dirty_card_queue_set());
   349 
   349 
   350   assert((ParallelGCThreads > 0) || worker_i == 0, "invariant");
   350   assert((ParallelGCThreads > 0) || worker_i == 0, "invariant");
   351 
   351 
   352   // The two flags below were introduced temporarily to serialize
   352   updateRS(&into_cset_dcq, worker_i);
   353   // the updating and scanning of remembered sets. There are some
   353   scanRS(oc, code_root_cl, worker_i);
   354   // race conditions when these two operations are done in parallel
       
   355   // and they are causing failures. When we resolve said race
       
   356   // conditions, we'll revert back to parallel remembered set
       
   357   // updating and scanning. See CRs 6677707 and 6677708.
       
   358   if (G1UseParallelRSetUpdating || (worker_i == 0)) {
       
   359     updateRS(&into_cset_dcq, worker_i);
       
   360   } else {
       
   361     _g1p->phase_times()->record_update_rs_processed_buffers(worker_i, 0);
       
   362     _g1p->phase_times()->record_update_rs_time(worker_i, 0.0);
       
   363   }
       
   364   if (G1UseParallelRSetScanning || (worker_i == 0)) {
       
   365     scanRS(oc, code_root_cl, worker_i);
       
   366   } else {
       
   367     _g1p->phase_times()->record_scan_rs_time(worker_i, 0.0);
       
   368   }
       
   369 
   354 
   370   // We now clear the cached values of _cset_rs_update_cl for this worker
   355   // We now clear the cached values of _cset_rs_update_cl for this worker
   371   _cset_rs_update_cl[worker_i] = NULL;
   356   _cset_rs_update_cl[worker_i] = NULL;
   372 }
   357 }
   373 
   358