diff options
Diffstat (limited to 'src/counters.h')
-rw-r--r-- | src/counters.h | 44 |
1 files changed, 28 insertions, 16 deletions
diff --git a/src/counters.h b/src/counters.h index 048fdaab..6498a024 100644 --- a/src/counters.h +++ b/src/counters.h @@ -38,27 +38,27 @@ namespace internal { // counters for monitoring. Counters can be looked up and // manipulated by name. -class StatsTable : public AllStatic { +class StatsTable { public: // Register an application-defined function where // counters can be looked up. - static void SetCounterFunction(CounterLookupCallback f) { + void SetCounterFunction(CounterLookupCallback f) { lookup_function_ = f; } // Register an application-defined function to create // a histogram for passing to the AddHistogramSample function - static void SetCreateHistogramFunction(CreateHistogramCallback f) { + void SetCreateHistogramFunction(CreateHistogramCallback f) { create_histogram_function_ = f; } // Register an application-defined function to add a sample // to a histogram created with CreateHistogram function - static void SetAddHistogramSampleFunction(AddHistogramSampleCallback f) { + void SetAddHistogramSampleFunction(AddHistogramSampleCallback f) { add_histogram_sample_function_ = f; } - static bool HasCounterFunction() { + bool HasCounterFunction() const { return lookup_function_ != NULL; } @@ -68,7 +68,7 @@ class StatsTable : public AllStatic { // may receive a different location to store it's counter. // The return value must not be cached and re-used across // threads, although a single thread is free to cache it. - static int* FindLocation(const char* name) { + int* FindLocation(const char* name) { if (!lookup_function_) return NULL; return lookup_function_(name); } @@ -78,25 +78,31 @@ class StatsTable : public AllStatic { // function. min and max define the expected minimum and maximum // sample values. buckets is the maximum number of buckets // that the samples will be grouped into. - static void* CreateHistogram(const char* name, - int min, - int max, - size_t buckets) { + void* CreateHistogram(const char* name, + int min, + int max, + size_t buckets) { if (!create_histogram_function_) return NULL; return create_histogram_function_(name, min, max, buckets); } // Add a sample to a histogram created with the CreateHistogram // function. - static void AddHistogramSample(void* histogram, int sample) { + void AddHistogramSample(void* histogram, int sample) { if (!add_histogram_sample_function_) return; return add_histogram_sample_function_(histogram, sample); } private: - static CounterLookupCallback lookup_function_; - static CreateHistogramCallback create_histogram_function_; - static AddHistogramSampleCallback add_histogram_sample_function_; + StatsTable(); + + CounterLookupCallback lookup_function_; + CreateHistogramCallback create_histogram_function_; + AddHistogramSampleCallback add_histogram_sample_function_; + + friend class Isolate; + + DISALLOW_COPY_AND_ASSIGN(StatsTable); }; // StatsCounters are dynamically created values which can be tracked in @@ -166,9 +172,12 @@ struct StatsCounter { if (lookup_done_) return ptr_; lookup_done_ = true; - ptr_ = StatsTable::FindLocation(name_); + ptr_ = FindLocationInStatsTable(); return ptr_; } + + private: + int* FindLocationInStatsTable() const; }; // StatsCounterTimer t = { { L"t:foo", NULL, false }, 0, 0 }; @@ -216,10 +225,13 @@ struct HistogramTimer { void* GetHistogram() { if (!lookup_done_) { lookup_done_ = true; - histogram_ = StatsTable::CreateHistogram(name_, 0, 10000, 50); + histogram_ = CreateHistogram(); } return histogram_; } + + private: + void* CreateHistogram() const; }; // Helper class for scoping a HistogramTimer. |