< prev index next >

src/share/vm/gc/g1/concurrentMark.cpp

Print this page
rev 9733 : [mq]: webrev.00
rev 9734 : [mq]: webrev.01
rev 9735 : [mq]: webrev.02

*** 434,443 **** --- 434,444 ---- _has_overflown(false), _concurrent(false), _has_aborted(false), _restart_for_overflow(false), _concurrent_marking_in_progress(false), + _concurrent_phase_started(false), // _verbose_level set below _init_times(), _remark_times(), _remark_mark_times(), _remark_weak_ref_times(),
*** 1001,1010 **** --- 1002,1024 ---- // mainly used for sanity checking. root_regions()->scan_finished(); } } + void ConcurrentMark::register_concurrent_phase_start(const char* title) { + assert(!_concurrent_phase_started, "Sanity"); + _concurrent_phase_started = true; + _g1h->gc_timer_cm()->register_gc_concurrent_start(title); + } + + void ConcurrentMark::register_concurrent_phase_end() { + if (_concurrent_phase_started) { + _concurrent_phase_started = false; + _g1h->gc_timer_cm()->register_gc_concurrent_end(); + } + } + void ConcurrentMark::markFromRoots() { // we might be tempted to assert that: // assert(asynch == !SafepointSynchronize::is_at_safepoint(), // "inconsistent argument?"); // However that wouldn't be right, because it's possible that
*** 2607,2616 **** --- 2621,2634 ---- satb_mq_set.set_active_all_threads( false, /* new active value */ satb_mq_set.is_active() /* expected_active */); _g1h->trace_heap_after_concurrent_cycle(); + + // Close any open concurrent phase timing + register_concurrent_phase_end(); + _g1h->register_concurrent_cycle_end(); } static void print_ms_time_info(const char* prefix, const char* name, NumberSeq& ns) {
< prev index next >