Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(432)

Unified Diff: src/counters.cc

Issue 2929853003: Fix use of history timers in background threads. (Closed)
Patch Set: Make explicit when async_counters is needed. Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/counters.h ('k') | src/isolate.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/counters.cc
diff --git a/src/counters.cc b/src/counters.cc
index ff76aa650a8b6cfd3911ba390c3772a7c82ceaeb..a06c91f3f7ed554ab2b545fbf8dc09e86daf3b1f 100644
--- a/src/counters.cc
+++ b/src/counters.cc
@@ -77,27 +77,23 @@ void* Histogram::CreateHistogram() const {
return counters_->CreateHistogram(name_, min_, max_, num_buckets_);
}
-
-// Start the timer.
-void HistogramTimer::Start() {
- if (Enabled()) {
- timer_.Start();
- }
- Logger::CallEventLogger(counters()->isolate(), name(), Logger::START, true);
+void TimedHistogram::Start(base::ElapsedTimer* timer, Isolate* isolate) {
+ if (Enabled()) timer->Start();
+ if (isolate) Logger::CallEventLogger(isolate, name(), Logger::START, true);
}
-
-// Stop the timer and record the results.
-void HistogramTimer::Stop() {
+void TimedHistogram::Stop(base::ElapsedTimer* timer, Isolate* isolate) {
if (Enabled()) {
- int64_t sample = resolution_ == MICROSECOND
- ? timer_.Elapsed().InMicroseconds()
- : timer_.Elapsed().InMilliseconds();
// Compute the delta between start and stop, in microseconds.
+ int64_t sample = resolution_ == HistogramTimerResolution::MICROSECOND
+ ? timer->Elapsed().InMicroseconds()
+ : timer->Elapsed().InMilliseconds();
+ timer->Stop();
AddSample(static_cast<int>(sample));
- timer_.Stop();
}
- Logger::CallEventLogger(counters()->isolate(), name(), Logger::END, true);
+ if (isolate != nullptr) {
+ Logger::CallEventLogger(isolate, name(), Logger::END, true);
+ }
}
Counters::Counters(Isolate* isolate)
@@ -127,20 +123,38 @@ Counters::Counters(Isolate* isolate)
histogram.num_buckets, this);
}
+ const int DefaultTimedHistogramNumBuckets = 50;
+
static const struct {
HistogramTimer Counters::*member;
const char* caption;
int max;
- HistogramTimer::Resolution res;
+ HistogramTimerResolution res;
} kHistogramTimers[] = {
#define HT(name, caption, max, res) \
- {&Counters::name##_, #caption, max, HistogramTimer::res},
+ {&Counters::name##_, #caption, max, HistogramTimerResolution::res},
HISTOGRAM_TIMER_LIST(HT)
#undef HT
};
for (const auto& timer : kHistogramTimers) {
- this->*timer.member =
- HistogramTimer(timer.caption, 0, timer.max, timer.res, 50, this);
+ this->*timer.member = HistogramTimer(timer.caption, 0, timer.max, timer.res,
+ DefaultTimedHistogramNumBuckets, this);
+ }
+
+ static const struct {
+ TimedHistogram Counters::*member;
+ const char* caption;
+ int max;
+ HistogramTimerResolution res;
+ } kTimedHistograms[] = {
+#define HT(name, caption, max, res) \
+ {&Counters::name##_, #caption, max, HistogramTimerResolution::res},
+ TIMED_HISTOGRAM_LIST(HT)
+#undef HT
+ };
+ for (const auto& timer : kTimedHistograms) {
+ this->*timer.member = TimedHistogram(timer.caption, 0, timer.max, timer.res,
+ DefaultTimedHistogramNumBuckets, this);
}
static const struct {
@@ -152,8 +166,8 @@ Counters::Counters(Isolate* isolate)
#undef AHT
};
for (const auto& aht : kAggregatableHistogramTimers) {
- this->*aht.member =
- AggregatableHistogramTimer(aht.caption, 0, 10000000, 50, this);
+ this->*aht.member = AggregatableHistogramTimer(
+ aht.caption, 0, 10000000, DefaultTimedHistogramNumBuckets, this);
}
static const struct {
@@ -294,6 +308,10 @@ void Counters::ResetCreateHistogramFunction(CreateHistogramCallback f) {
HISTOGRAM_TIMER_LIST(HT)
#undef HT
+#define HT(name, caption, max, res) name##_.Reset();
+ TIMED_HISTOGRAM_LIST(HT)
+#undef HT
+
#define AHT(name, caption) name##_.Reset();
AGGREGATABLE_HISTOGRAM_TIMER_LIST(AHT)
#undef AHT
« no previous file with comments | « src/counters.h ('k') | src/isolate.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698