comparison src/share/vm/gc_implementation/g1/g1RemSet.cpp @ 6219:922993931b3d

7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause Summary: Also reviewed by: vitalyd@gmail.com. Move the timing out of G1CollectorPolicy into the G1GCPhaseTimes class Reviewed-by: johnc
author brutisso
date Wed, 11 Jul 2012 22:47:38 +0200
parents b4ebad3520bb
children 3a431b605145
comparison
equal deleted inserted replaced
6196:3759236eea14 6219:922993931b3d
27 #include "gc_implementation/g1/concurrentG1Refine.hpp" 27 #include "gc_implementation/g1/concurrentG1Refine.hpp"
28 #include "gc_implementation/g1/concurrentG1RefineThread.hpp" 28 #include "gc_implementation/g1/concurrentG1RefineThread.hpp"
29 #include "gc_implementation/g1/g1BlockOffsetTable.inline.hpp" 29 #include "gc_implementation/g1/g1BlockOffsetTable.inline.hpp"
30 #include "gc_implementation/g1/g1CollectedHeap.inline.hpp" 30 #include "gc_implementation/g1/g1CollectedHeap.inline.hpp"
31 #include "gc_implementation/g1/g1CollectorPolicy.hpp" 31 #include "gc_implementation/g1/g1CollectorPolicy.hpp"
32 #include "gc_implementation/g1/g1GCPhaseTimes.hpp"
32 #include "gc_implementation/g1/g1OopClosures.inline.hpp" 33 #include "gc_implementation/g1/g1OopClosures.inline.hpp"
33 #include "gc_implementation/g1/g1RemSet.inline.hpp" 34 #include "gc_implementation/g1/g1RemSet.inline.hpp"
34 #include "gc_implementation/g1/heapRegionSeq.inline.hpp" 35 #include "gc_implementation/g1/heapRegionSeq.inline.hpp"
35 #include "memory/iterator.hpp" 36 #include "memory/iterator.hpp"
36 #include "oops/oop.inline.hpp" 37 #include "oops/oop.inline.hpp"
222 double scan_rs_time_sec = os::elapsedTime() - rs_time_start; 223 double scan_rs_time_sec = os::elapsedTime() - rs_time_start;
223 224
224 assert( _cards_scanned != NULL, "invariant" ); 225 assert( _cards_scanned != NULL, "invariant" );
225 _cards_scanned[worker_i] = scanRScl.cards_done(); 226 _cards_scanned[worker_i] = scanRScl.cards_done();
226 227
227 _g1p->record_scan_rs_time(worker_i, scan_rs_time_sec * 1000.0); 228 _g1p->phase_times()->record_scan_rs_time(worker_i, scan_rs_time_sec * 1000.0);
228 } 229 }
229 230
230 // Closure used for updating RSets and recording references that 231 // Closure used for updating RSets and recording references that
231 // point into the collection set. Only called during an 232 // point into the collection set. Only called during an
232 // evacuation pause. 233 // evacuation pause.
274 // XXX This isn't true any more: keeping cards of young regions 275 // XXX This isn't true any more: keeping cards of young regions
275 // marked dirty broke it. Need some reasonable fix. 276 // marked dirty broke it. Need some reasonable fix.
276 guarantee(cl.n() == 0, "Card table should be clean."); 277 guarantee(cl.n() == 0, "Card table should be clean.");
277 } 278 }
278 279
279 _g1p->record_update_rs_time(worker_i, (os::elapsedTime() - start) * 1000.0); 280 _g1p->phase_times()->record_update_rs_time(worker_i, (os::elapsedTime() - start) * 1000.0);
280 } 281 }
281 282
282 class CountRSSizeClosure: public HeapRegionClosure { 283 class CountRSSizeClosure: public HeapRegionClosure {
283 size_t _n; 284 size_t _n;
284 size_t _tot; 285 size_t _tot;
388 // conditions, we'll revert back to parallel remembered set 389 // conditions, we'll revert back to parallel remembered set
389 // updating and scanning. See CRs 6677707 and 6677708. 390 // updating and scanning. See CRs 6677707 and 6677708.
390 if (G1UseParallelRSetUpdating || (worker_i == 0)) { 391 if (G1UseParallelRSetUpdating || (worker_i == 0)) {
391 updateRS(&into_cset_dcq, worker_i); 392 updateRS(&into_cset_dcq, worker_i);
392 } else { 393 } else {
393 _g1p->record_update_rs_processed_buffers(worker_i, 0.0); 394 _g1p->phase_times()->record_update_rs_processed_buffers(worker_i, 0.0);
394 _g1p->record_update_rs_time(worker_i, 0.0); 395 _g1p->phase_times()->record_update_rs_time(worker_i, 0.0);
395 } 396 }
396 if (G1UseParallelRSetScanning || (worker_i == 0)) { 397 if (G1UseParallelRSetScanning || (worker_i == 0)) {
397 scanRS(oc, worker_i); 398 scanRS(oc, worker_i);
398 } else { 399 } else {
399 _g1p->record_scan_rs_time(worker_i, 0.0); 400 _g1p->phase_times()->record_scan_rs_time(worker_i, 0.0);
400 } 401 }
401 402
402 // We now clear the cached values of _cset_rs_update_cl for this worker 403 // We now clear the cached values of _cset_rs_update_cl for this worker
403 _cset_rs_update_cl[worker_i] = NULL; 404 _cset_rs_update_cl[worker_i] = NULL;
404 } 405 }