hotspot/src/share/vm/gc_implementation/g1/g1RemSet.cpp
changeset 5891 59044ec3fca3
parent 5547 f4b087cbb361
child 6068 80ef41e75a2d
equal deleted inserted replaced
5890:5766abbf8789 5891:59044ec3fca3
   301   double scan_rs_time_sec = os::elapsedTime() - rs_time_start;
   301   double scan_rs_time_sec = os::elapsedTime() - rs_time_start;
   302 
   302 
   303   assert( _cards_scanned != NULL, "invariant" );
   303   assert( _cards_scanned != NULL, "invariant" );
   304   _cards_scanned[worker_i] = scanRScl.cards_done();
   304   _cards_scanned[worker_i] = scanRScl.cards_done();
   305 
   305 
   306   _g1p->record_scan_rs_start_time(worker_i, rs_time_start * 1000.0);
       
   307   _g1p->record_scan_rs_time(worker_i, scan_rs_time_sec * 1000.0);
   306   _g1p->record_scan_rs_time(worker_i, scan_rs_time_sec * 1000.0);
   308 }
   307 }
   309 
   308 
   310 void HRInto_G1RemSet::updateRS(int worker_i) {
   309 void HRInto_G1RemSet::updateRS(int worker_i) {
   311   ConcurrentG1Refine* cg1r = _g1->concurrent_g1_refine();
   310   ConcurrentG1Refine* cg1r = _g1->concurrent_g1_refine();
   312 
   311 
   313   double start = os::elapsedTime();
   312   double start = os::elapsedTime();
   314   _g1p->record_update_rs_start_time(worker_i, start * 1000.0);
       
   315 
       
   316   // Apply the appropriate closure to all remaining log entries.
   313   // Apply the appropriate closure to all remaining log entries.
   317   _g1->iterate_dirty_card_closure(false, worker_i);
   314   _g1->iterate_dirty_card_closure(false, worker_i);
   318   // Now there should be no dirty cards.
   315   // Now there should be no dirty cards.
   319   if (G1RSLogCheckCardTable) {
   316   if (G1RSLogCheckCardTable) {
   320     CountNonCleanMemRegionClosure cl(_g1);
   317     CountNonCleanMemRegionClosure cl(_g1);
   469     // updating and scanning. See CRs 6677707 and 6677708.
   466     // updating and scanning. See CRs 6677707 and 6677708.
   470     if (G1UseParallelRSetUpdating || (worker_i == 0)) {
   467     if (G1UseParallelRSetUpdating || (worker_i == 0)) {
   471       updateRS(worker_i);
   468       updateRS(worker_i);
   472       scanNewRefsRS(oc, worker_i);
   469       scanNewRefsRS(oc, worker_i);
   473     } else {
   470     } else {
   474       _g1p->record_update_rs_start_time(worker_i, os::elapsedTime() * 1000.0);
       
   475       _g1p->record_update_rs_processed_buffers(worker_i, 0.0);
   471       _g1p->record_update_rs_processed_buffers(worker_i, 0.0);
   476       _g1p->record_update_rs_time(worker_i, 0.0);
   472       _g1p->record_update_rs_time(worker_i, 0.0);
   477       _g1p->record_scan_new_refs_time(worker_i, 0.0);
   473       _g1p->record_scan_new_refs_time(worker_i, 0.0);
   478     }
   474     }
   479     if (G1UseParallelRSetScanning || (worker_i == 0)) {
   475     if (G1UseParallelRSetScanning || (worker_i == 0)) {
   480       scanRS(oc, worker_i);
   476       scanRS(oc, worker_i);
   481     } else {
   477     } else {
   482       _g1p->record_scan_rs_start_time(worker_i, os::elapsedTime() * 1000.0);
       
   483       _g1p->record_scan_rs_time(worker_i, 0.0);
   478       _g1p->record_scan_rs_time(worker_i, 0.0);
   484     }
   479     }
   485   } else {
   480   } else {
   486     assert(worker_i == 0, "invariant");
   481     assert(worker_i == 0, "invariant");
   487     updateRS(0);
   482     updateRS(0);