< prev index next >

src/share/vm/gc/shared/gcTraceTime.cpp

Print this page

        

*** 21,79 **** * questions. * */ #include "precompiled.hpp" - #include "gc/shared/gcTimer.hpp" - #include "gc/shared/gcTrace.hpp" #include "gc/shared/gcTraceTime.hpp" ! #include "runtime/globals.hpp" #include "runtime/os.hpp" - #include "runtime/safepoint.hpp" - #include "runtime/thread.inline.hpp" - #include "runtime/timer.hpp" - #include "utilities/ostream.hpp" - #include "utilities/ticks.inline.hpp" ! ! GCTraceTimeImpl::GCTraceTimeImpl(const char* title, bool doit, bool print_cr, GCTimer* timer) : ! _title(title), _doit(doit), _print_cr(print_cr), _timer(timer), _start_counter() { ! if (_doit || _timer != NULL) { ! _start_counter.stamp(); } - - if (_timer != NULL) { - assert(SafepointSynchronize::is_at_safepoint(), "Tracing currently only supported at safepoints"); - assert(Thread::current()->is_VM_thread(), "Tracing currently only supported from the VM thread"); - - _timer->register_gc_phase_start(title, _start_counter); - } - - if (_doit) { - gclog_or_tty->gclog_stamp(); - gclog_or_tty->print("[%s", title); - gclog_or_tty->flush(); } } ! GCTraceTimeImpl::~GCTraceTimeImpl() { ! Ticks stop_counter; ! ! if (_doit || _timer != NULL) { ! stop_counter.stamp(); ! } ! ! if (_timer != NULL) { ! _timer->register_gc_phase_end(stop_counter); ! } ! ! if (_doit) { ! const Tickspan duration = stop_counter - _start_counter; ! double duration_in_seconds = TicksToTimeHelper::seconds(duration); ! if (_print_cr) { ! gclog_or_tty->print_cr(", %3.7f secs]", duration_in_seconds); } else { ! gclog_or_tty->print(", %3.7f secs]", duration_in_seconds); } - gclog_or_tty->flush(); } } --- 21,60 ---- * questions. * */ #include "precompiled.hpp" #include "gc/shared/gcTraceTime.hpp" ! #include "logging/log.hpp" #include "runtime/os.hpp" ! GCTraceCPUTime::GCTraceCPUTime() : ! _active(Log<LOG_TAGS(gc, cpu)>::is_info()), ! _starting_user_time(0.0), ! _starting_system_time(0.0), ! _starting_real_time(0.0) ! { ! if (_active) { ! bool valid = os::getTimesSecs(&_starting_real_time, ! &_starting_user_time, ! &_starting_system_time); ! if (!valid) { ! log_warning(gc, cpu)("TraceCPUTime: os::getTimesSecs() returned invalid result"); ! _active = false; } } } ! GCTraceCPUTime::~GCTraceCPUTime() { ! if (_active) { ! double real_time, user_time, system_time; ! bool valid = os::getTimesSecs(&real_time, &user_time, &system_time); ! if (valid) { ! log_info(gc, cpu)("User=%3.2fs Sys=%3.2fs Real=%3.2fs", ! user_time - _starting_user_time, ! system_time - _starting_system_time, ! real_time - _starting_real_time); } else { ! log_warning(gc, cpu)("TraceCPUTime: os::getTimesSecs() returned invalid result"); } } }
< prev index next >