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); |