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