| Index: webrtc/system_wrappers/include/metrics.h
|
| diff --git a/webrtc/system_wrappers/include/metrics.h b/webrtc/system_wrappers/include/metrics.h
|
| index ceddc95eae388d0e1831fe9f43990136ed9eaf8b..9b14736ec2eee4e4013e11fc8cf29def012a585d 100644
|
| --- a/webrtc/system_wrappers/include/metrics.h
|
| +++ b/webrtc/system_wrappers/include/metrics.h
|
| @@ -110,35 +110,41 @@
|
|
|
| // The name of the histogram should not vary.
|
| // TODO(asapersson): Consider changing string to const char*.
|
| -#define RTC_HISTOGRAM_COMMON_BLOCK(constant_name, sample, \
|
| - factory_get_invocation) \
|
| - do { \
|
| +#define RTC_HISTOGRAM_COMMON_BLOCK(constant_name, sample, \
|
| + factory_get_invocation) \
|
| + do { \
|
| static webrtc::metrics::Histogram* atomic_histogram_pointer = nullptr; \
|
| - webrtc::metrics::Histogram* histogram_pointer = \
|
| - rtc::AtomicOps::AcquireLoadPtr(&atomic_histogram_pointer); \
|
| - if (!histogram_pointer) { \
|
| - histogram_pointer = factory_get_invocation; \
|
| - webrtc::metrics::Histogram* prev_pointer = \
|
| - rtc::AtomicOps::CompareAndSwapPtr( \
|
| - &atomic_histogram_pointer, \
|
| - static_cast<webrtc::metrics::Histogram*>(nullptr), \
|
| - histogram_pointer); \
|
| - RTC_DCHECK(prev_pointer == nullptr || \
|
| - prev_pointer == histogram_pointer); \
|
| - } \
|
| - webrtc::metrics::HistogramAdd(histogram_pointer, constant_name, sample); \
|
| + webrtc::metrics::Histogram* histogram_pointer = \
|
| + rtc::AtomicOps::AcquireLoadPtr(&atomic_histogram_pointer); \
|
| + if (!histogram_pointer) { \
|
| + histogram_pointer = factory_get_invocation; \
|
| + webrtc::metrics::Histogram* prev_pointer = \
|
| + rtc::AtomicOps::CompareAndSwapPtr( \
|
| + &atomic_histogram_pointer, \
|
| + static_cast<webrtc::metrics::Histogram*>(nullptr), \
|
| + histogram_pointer); \
|
| + RTC_DCHECK(prev_pointer == nullptr || \
|
| + prev_pointer == histogram_pointer); \
|
| + } \
|
| + if (histogram_pointer) { \
|
| + RTC_DCHECK_EQ(constant_name, \
|
| + webrtc::metrics::GetHistogramName(histogram_pointer)) \
|
| + << "The name should not vary."; \
|
| + webrtc::metrics::HistogramAdd(histogram_pointer, sample); \
|
| + } \
|
| } while (0)
|
|
|
| // Deprecated.
|
| // The histogram is constructed/found for each call.
|
| -// May be used for histograms with infrequent updates.
|
| +// May be used for histograms with infrequent updates.`
|
| #define RTC_HISTOGRAM_COMMON_BLOCK_SLOW(name, sample, factory_get_invocation) \
|
| - do { \
|
| - webrtc::metrics::Histogram* histogram_pointer = factory_get_invocation; \
|
| - webrtc::metrics::HistogramAdd(histogram_pointer, name, sample); \
|
| + do { \
|
| + webrtc::metrics::Histogram* histogram_pointer = factory_get_invocation; \
|
| + if (histogram_pointer) { \
|
| + webrtc::metrics::HistogramAdd(histogram_pointer, sample); \
|
| + } \
|
| } while (0)
|
|
|
| -
|
| // Helper macros.
|
| // Macros for calling a histogram with varying name (e.g. when using a metric
|
| // in different modes such as real-time vs screenshare).
|
| @@ -212,10 +218,11 @@ Histogram* HistogramFactoryGetCounts(
|
| Histogram* HistogramFactoryGetEnumeration(
|
| const std::string& name, int boundary);
|
|
|
| +// Returns name of the histogram.
|
| +const std::string& GetHistogramName(Histogram* histogram_pointer);
|
| +
|
| // Function for adding a |sample| to a histogram.
|
| -// |name| can be used to verify that it matches the histogram name.
|
| -void HistogramAdd(
|
| - Histogram* histogram_pointer, const std::string& name, int sample);
|
| +void HistogramAdd(Histogram* histogram_pointer, int sample);
|
|
|
| } // namespace metrics
|
| } // namespace webrtc
|
|
|