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