< prev index next >

src/share/vm/runtime/timer.cpp

Print this page
rev 7854 : imported patch 8027962-per-phase-timing-measurements-for-strong-roots-processing

@@ -24,10 +24,13 @@
 
 #include "precompiled.hpp"
 #include "oops/oop.inline.hpp"
 #include "runtime/timer.hpp"
 #include "utilities/ostream.hpp"
+#ifdef INCLUDE_ALL_GCS
+#include "gc_implementation/g1/g1GCPhaseTimes.hpp"
+#endif
 
 double TimeHelper::counter_to_seconds(jlong counter) {
   double count = (double) counter;
   double freq  = (double) os::elapsed_frequency();
   return counter/freq;

@@ -138,10 +141,24 @@
       tty->flush();
     }
   }
 }
 
+TrackPhaseTime::TrackPhaseTime(GCPhaseTimeTracker *data, uint phase) :
+  _data(data), _phase(phase) {
+  if (_data != NULL && _data->active()) {
+    _last = os::elapsed_counter();
+  }
+}
+
+TrackPhaseTime::~TrackPhaseTime() {
+  if (_data != NULL && _data->active()) {
+    double time = (double)(os::elapsed_counter() - _last) * 1000.0 / os::elapsed_frequency();
+    _data->set_value(_phase, time);
+  }
+}
+
 TraceCPUTime::TraceCPUTime(bool doit,
                bool print_cr,
                outputStream *logfile) :
   _active(doit),
   _print_cr(print_cr),
< prev index next >