< prev index next >

hotspot/src/share/vm/gc_implementation/shared/gcTraceTime.cpp

Print this page
rev 7125 : 7176220: 'Full GC' events miss date stamp information occasionally
Summary: Move date stamp logic into GCTraceTime
Reviewed-by: brutisso, tschatzl


  32 #include "runtime/thread.inline.hpp"
  33 #include "runtime/timer.hpp"
  34 #include "utilities/ostream.hpp"
  35 #include "utilities/ticks.inline.hpp"
  36 
  37 
  38 GCTraceTime::GCTraceTime(const char* title, bool doit, bool print_cr, GCTimer* timer, GCId gc_id) :
  39     _title(title), _doit(doit), _print_cr(print_cr), _timer(timer), _start_counter() {
  40   if (_doit || _timer != NULL) {
  41     _start_counter.stamp();
  42   }
  43 
  44   if (_timer != NULL) {
  45     assert(SafepointSynchronize::is_at_safepoint(), "Tracing currently only supported at safepoints");
  46     assert(Thread::current()->is_VM_thread(), "Tracing currently only supported from the VM thread");
  47 
  48     _timer->register_gc_phase_start(title, _start_counter);
  49   }
  50 
  51   if (_doit) {
  52     if (PrintGCTimeStamps) {
  53       gclog_or_tty->stamp();
  54       gclog_or_tty->print(": ");
  55     }
  56     if (PrintGCID) {
  57       gclog_or_tty->print("#%u: ", gc_id.id());
  58     }
  59     gclog_or_tty->print("[%s", title);
  60     gclog_or_tty->flush();
  61   }
  62 }
  63 
  64 GCTraceTime::~GCTraceTime() {
  65   Ticks stop_counter;
  66 
  67   if (_doit || _timer != NULL) {
  68     stop_counter.stamp();
  69   }
  70 
  71   if (_timer != NULL) {
  72     _timer->register_gc_phase_end(stop_counter);
  73   }
  74 
  75   if (_doit) {


  32 #include "runtime/thread.inline.hpp"
  33 #include "runtime/timer.hpp"
  34 #include "utilities/ostream.hpp"
  35 #include "utilities/ticks.inline.hpp"
  36 
  37 
  38 GCTraceTime::GCTraceTime(const char* title, bool doit, bool print_cr, GCTimer* timer, GCId gc_id) :
  39     _title(title), _doit(doit), _print_cr(print_cr), _timer(timer), _start_counter() {
  40   if (_doit || _timer != NULL) {
  41     _start_counter.stamp();
  42   }
  43 
  44   if (_timer != NULL) {
  45     assert(SafepointSynchronize::is_at_safepoint(), "Tracing currently only supported at safepoints");
  46     assert(Thread::current()->is_VM_thread(), "Tracing currently only supported from the VM thread");
  47 
  48     _timer->register_gc_phase_start(title, _start_counter);
  49   }
  50 
  51   if (_doit) {
  52     gclog_or_tty->date_stamp(PrintGCDateStamps);
  53     gclog_or_tty->stamp(PrintGCTimeStamps);


  54     if (PrintGCID) {
  55       gclog_or_tty->print("#%u: ", gc_id.id());
  56     }
  57     gclog_or_tty->print("[%s", title);
  58     gclog_or_tty->flush();
  59   }
  60 }
  61 
  62 GCTraceTime::~GCTraceTime() {
  63   Ticks stop_counter;
  64 
  65   if (_doit || _timer != NULL) {
  66     stop_counter.stamp();
  67   }
  68 
  69   if (_timer != NULL) {
  70     _timer->register_gc_phase_end(stop_counter);
  71   }
  72 
  73   if (_doit) {
< prev index next >