| Index: base/metrics/histogram.cc
|
| diff --git a/base/metrics/histogram.cc b/base/metrics/histogram.cc
|
| index 7feacdbff7f62c3fa8d1b5e524fd6d4ea3a2b4fd..ea4f8167fa28cc7098ce233cddbd7ed77fd23a77 100644
|
| --- a/base/metrics/histogram.cc
|
| +++ b/base/metrics/histogram.cc
|
| @@ -154,22 +154,10 @@
|
| ImportPersistentHistograms();
|
|
|
| HistogramBase* histogram = StatisticsRecorder::FindHistogram(name_);
|
| -
|
| - // crbug.com/588946 debugging. See comment at end of function.
|
| - const BucketRanges* created_ranges =
|
| - reinterpret_cast<const BucketRanges*>(0xDEADBEEF);
|
| - const BucketRanges* registered_ranges =
|
| - reinterpret_cast<const BucketRanges*>(0xDEADBEEF);
|
| - HistogramBase* tentative_histogram =
|
| - reinterpret_cast<HistogramBase*>(0xDEADBEEF);
|
| - PersistentMemoryAllocator* allocator =
|
| - reinterpret_cast<PersistentMemoryAllocator*>(0xDEADBEEF);
|
| - PersistentMemoryAllocator::Reference histogram_ref = 0xDEADBEEF;
|
| -
|
| if (!histogram) {
|
| // To avoid racy destruction at shutdown, the following will be leaked.
|
| - created_ranges = CreateRanges();
|
| - registered_ranges =
|
| + const BucketRanges* created_ranges = CreateRanges();
|
| + const BucketRanges* registered_ranges =
|
| StatisticsRecorder::RegisterOrDeleteDuplicateRanges(created_ranges);
|
|
|
| // In most cases, the bucket-count, minimum, and maximum values are known
|
| @@ -182,17 +170,15 @@
|
| minimum_ = registered_ranges->range(1);
|
| maximum_ = registered_ranges->range(bucket_count_ - 1);
|
| }
|
| - CHECK_LT(0, minimum_);
|
| - CHECK_LT(0, maximum_);
|
|
|
| // Try to create the histogram using a "persistent" allocator. As of
|
| // 2015-01-14, the availability of such is controlled by a base::Feature
|
| // that is off by default. If the allocator doesn't exist or if
|
| // allocating from it fails, code below will allocate the histogram from
|
| // the process heap.
|
| - histogram_ref = 0;
|
| - tentative_histogram = nullptr;
|
| - allocator =
|
| + PersistentMemoryAllocator::Reference histogram_ref = 0;
|
| + HistogramBase* tentative_histogram = nullptr;
|
| + PersistentMemoryAllocator* allocator =
|
| GetPersistentHistogramMemoryAllocator();
|
| if (allocator) {
|
| flags_ |= HistogramBase::kIsPersistent;
|
| @@ -205,12 +191,6 @@
|
| registered_ranges,
|
| flags_,
|
| &histogram_ref);
|
| - CHECK_LT(0, minimum_);
|
| - CHECK_LT(0, maximum_);
|
| - CHECK_EQ(minimum_,
|
| - static_cast<Histogram*>(tentative_histogram)->declared_min_);
|
| - CHECK_EQ(maximum_,
|
| - static_cast<Histogram*>(tentative_histogram)->declared_max_);
|
| }
|
|
|
| // Handle the case where no persistent allocator is present or the
|
| @@ -220,12 +200,6 @@
|
| DCHECK(!allocator); // Shouldn't have failed.
|
| flags_ &= ~HistogramBase::kIsPersistent;
|
| tentative_histogram = HeapAlloc(registered_ranges);
|
| - CHECK_LT(0, minimum_);
|
| - CHECK_LT(0, maximum_);
|
| - CHECK_EQ(minimum_,
|
| - static_cast<Histogram*>(tentative_histogram)->declared_min_);
|
| - CHECK_EQ(maximum_,
|
| - static_cast<Histogram*>(tentative_histogram)->declared_max_);
|
| }
|
|
|
| FillHistogram(tentative_histogram);
|
| @@ -240,15 +214,6 @@
|
| }
|
|
|
| DCHECK_EQ(histogram_type_, histogram->GetHistogramType());
|
| - bool bad_args = false;
|
| - HistogramBase* existing_histogram = histogram;
|
| - HistogramType existing_type = histogram->GetHistogramType();
|
| - const char* existing_name = histogram->histogram_name().c_str();
|
| - Sample existing_minimum = static_cast<Histogram*>(histogram)->declared_min_;
|
| - Sample existing_maximum = static_cast<Histogram*>(histogram)->declared_max_;
|
| - uint32_t existing_bucket_count =
|
| - static_cast<Histogram*>(histogram)->bucket_count();
|
| -
|
| if (bucket_count_ != 0 &&
|
| !histogram->HasConstructionArguments(minimum_, maximum_, bucket_count_)) {
|
| // The construction arguments do not match the existing histogram. This can
|
| @@ -258,45 +223,8 @@
|
| // on dereference, but extension/Pepper APIs will guard against NULL and not
|
| // crash.
|
| DLOG(ERROR) << "Histogram " << name_ << " has bad construction arguments";
|
| - bad_args = true;
|
| - histogram = nullptr;
|
| - }
|
| -
|
| -#if !DCHECK_IS_ON() // Don't affect tests, only release builds.
|
| - // For the moment, crash here so that collected crash reports have access
|
| - // to the construction values in order to figure out why this is failing.
|
| - // TODO(bcwhite): Remove this once crbug.com/588946 is resolved. Also remove
|
| - // from beta-branch because we don't want crashes due to misbehaving
|
| - // extensions (see comment above).
|
| - if (!histogram) {
|
| - HistogramType histogram_type = histogram_type_;
|
| - HistogramBase::Sample minimum = minimum_;
|
| - HistogramBase::Sample maximum = maximum_;
|
| - uint32_t bucket_count = bucket_count_;
|
| - int32_t flags = flags_;
|
| - CHECK(histogram) << name_ << ": bad-args=" << bad_args;
|
| - base::debug::Alias(&histogram_type);
|
| - base::debug::Alias(&minimum);
|
| - base::debug::Alias(&maximum);
|
| - base::debug::Alias(&bucket_count);
|
| - base::debug::Alias(&flags);
|
| - base::debug::Alias(&created_ranges);
|
| - base::debug::Alias(®istered_ranges);
|
| - base::debug::Alias(&histogram_ref);
|
| - base::debug::Alias(&tentative_histogram);
|
| - base::debug::Alias(&allocator);
|
| - base::debug::Alias(&tentative_histogram);
|
| - }
|
| -#endif
|
| -
|
| - // Down here so vars are always "used".
|
| - base::debug::Alias(&bad_args);
|
| - base::debug::Alias(&existing_histogram);
|
| - base::debug::Alias(&existing_type);
|
| - base::debug::Alias(&existing_name);
|
| - base::debug::Alias(&existing_minimum);
|
| - base::debug::Alias(&existing_maximum);
|
| - base::debug::Alias(&existing_bucket_count);
|
| + return nullptr;
|
| + }
|
| return histogram;
|
| }
|
|
|
| @@ -558,12 +486,8 @@
|
| bucket_ranges_(ranges),
|
| declared_min_(minimum),
|
| declared_max_(maximum) {
|
| - CHECK_LT(0, minimum);
|
| - CHECK_LT(0, maximum);
|
| if (ranges)
|
| samples_.reset(new SampleVector(HashMetricName(name), ranges));
|
| - CHECK_EQ(minimum, declared_min_);
|
| - CHECK_EQ(maximum, declared_max_);
|
| }
|
|
|
| Histogram::Histogram(const std::string& name,
|
| @@ -579,16 +503,12 @@
|
| bucket_ranges_(ranges),
|
| declared_min_(minimum),
|
| declared_max_(maximum) {
|
| - CHECK_LT(0, minimum);
|
| - CHECK_LT(0, maximum);
|
| if (ranges) {
|
| samples_.reset(new SampleVector(HashMetricName(name),
|
| counts, counts_size, meta, ranges));
|
| logged_samples_.reset(new SampleVector(samples_->id(), logged_counts,
|
| counts_size, logged_meta, ranges));
|
| }
|
| - CHECK_EQ(minimum, declared_min_);
|
| - CHECK_EQ(maximum, declared_max_);
|
| }
|
|
|
| Histogram::~Histogram() {
|
|
|