void check_and_reset_timer() { if (!_timer_pending_reset) return; _contended_enter_timer.reset(); _monitor_wait_timer.reset(); _sleep_timer.reset(); _timer_pending_reset = 0; }
jlong sleep_ticks() { return (_timer_pending_reset ? 0 : _sleep_timer.active_ticks()); }
jlong monitor_wait_ticks() { return (_timer_pending_reset ? 0 : _monitor_wait_timer.active_ticks()); }
jlong contended_enter_ticks() { return (_timer_pending_reset ? 0 : _contended_enter_timer.active_ticks()); }
~GCPauseTimer() { _timer->start(); }
void thread_sleep_begin() { check_and_reset_timer(); _sleep_timer.start(); }
void contended_enter_begin() { check_and_reset_timer(); _contended_enter_timer.start(); }
inline void resume() { if (!UsePerfData) return; _t.start(); }
inline ~PerfTraceTime() { if (!UsePerfData || (_recursion_counter != NULL && --(*_recursion_counter) > 0)) return; _t.stop(); _timerp->inc(_t.ticks()); }
inline PerfTraceTime(PerfLongCounter* timerp, int* recursion_counter) : _timerp(timerp), _recursion_counter(recursion_counter) { if (!UsePerfData || (_recursion_counter != NULL && (*_recursion_counter)++ > 0)) return; _t.start(); }
inline void suspend() { if (!UsePerfData) return; _t.stop(); }
inline PerfTraceTime(PerfLongCounter* timerp) : _timerp(timerp), _recursion_counter(NULL) { if (!UsePerfData) return; _t.start(); }
void reset_gc_stat() { _num_collections = 0; _accumulated_timer.reset(); }
jlong gc_time_ms() { return _accumulated_timer.milliseconds(); }
void monitor_wait_begin() { check_and_reset_timer(); _monitor_wait_timer.start(); }
static long get_total_compilation_time() { return _t_total_compilation.milliseconds(); }
void monitor_wait_end() { _monitor_wait_timer.stop(); check_and_reset_timer(); }
// Activation void suspend() { if (_active) _t.stop(); }
void thread_sleep_end() { _sleep_timer.stop(); check_and_reset_timer(); }
void resume() { if (_active) _t.start(); }
void contended_enter_end() { _contended_enter_timer.stop(); check_and_reset_timer(); }
GCPauseTimer(elapsedTimer* timer) { _timer = timer; _timer->stop(); }