| Index: base/metrics/persistent_histogram_allocator.cc
|
| diff --git a/base/metrics/persistent_histogram_allocator.cc b/base/metrics/persistent_histogram_allocator.cc
|
| index 6006d31fbee70031acb901fb6a0f04a944f5ff04..e96433677df982570f6110447d7746b803af74ab 100644
|
| --- a/base/metrics/persistent_histogram_allocator.cc
|
| +++ b/base/metrics/persistent_histogram_allocator.cc
|
| @@ -4,9 +4,11 @@
|
|
|
| #include "base/metrics/persistent_histogram_allocator.h"
|
|
|
| +#include <memory>
|
| +
|
| #include "base/lazy_instance.h"
|
| #include "base/logging.h"
|
| -#include "base/memory/scoped_ptr.h"
|
| +#include "base/memory/ptr_util.h"
|
| #include "base/metrics/histogram.h"
|
| #include "base/metrics/histogram_base.h"
|
| #include "base/metrics/histogram_samples.h"
|
| @@ -47,12 +49,12 @@ PersistentHistogramAllocator* g_allocator;
|
| // Take an array of range boundaries and create a proper BucketRanges object
|
| // which is returned to the caller. A return of nullptr indicates that the
|
| // passed boundaries are invalid.
|
| -scoped_ptr<BucketRanges> CreateRangesFromData(
|
| +std::unique_ptr<BucketRanges> CreateRangesFromData(
|
| HistogramBase::Sample* ranges_data,
|
| uint32_t ranges_checksum,
|
| size_t count) {
|
| // To avoid racy destruction at shutdown, the following may be leaked.
|
| - scoped_ptr<BucketRanges> ranges(new BucketRanges(count));
|
| + std::unique_ptr<BucketRanges> ranges(new BucketRanges(count));
|
| DCHECK_EQ(count, ranges->size());
|
| for (size_t i = 0; i < count; ++i) {
|
| if (i > 0 && ranges_data[i] <= ranges_data[i - 1])
|
| @@ -110,7 +112,7 @@ struct PersistentHistogramAllocator::PersistentHistogramData {
|
| };
|
|
|
| PersistentHistogramAllocator::PersistentHistogramAllocator(
|
| - scoped_ptr<PersistentMemoryAllocator> memory)
|
| + std::unique_ptr<PersistentMemoryAllocator> memory)
|
| : memory_allocator_(std::move(memory)) {}
|
|
|
| PersistentHistogramAllocator::~PersistentHistogramAllocator() {}
|
| @@ -174,7 +176,7 @@ void PersistentHistogramAllocator::RecordCreateHistogramResult(
|
|
|
| // static
|
| void PersistentHistogramAllocator::SetGlobalAllocator(
|
| - scoped_ptr<PersistentHistogramAllocator> allocator) {
|
| + std::unique_ptr<PersistentHistogramAllocator> allocator) {
|
| // Releasing or changing an allocator is extremely dangerous because it
|
| // likely has histograms stored within it. If the backing memory is also
|
| // also released, future accesses to those histograms will seg-fault.
|
| @@ -194,7 +196,7 @@ PersistentHistogramAllocator::GetGlobalAllocator() {
|
| }
|
|
|
| // static
|
| -scoped_ptr<PersistentHistogramAllocator>
|
| +std::unique_ptr<PersistentHistogramAllocator>
|
| PersistentHistogramAllocator::ReleaseGlobalAllocatorForTesting() {
|
| PersistentHistogramAllocator* histogram_allocator = g_allocator;
|
| if (!histogram_allocator)
|
| @@ -229,7 +231,7 @@ PersistentHistogramAllocator::ReleaseGlobalAllocatorForTesting() {
|
| }
|
|
|
| g_allocator = nullptr;
|
| - return make_scoped_ptr(histogram_allocator);
|
| + return WrapUnique(histogram_allocator);
|
| };
|
|
|
| // static
|
| @@ -239,9 +241,9 @@ void PersistentHistogramAllocator::CreateGlobalAllocatorOnPersistentMemory(
|
| size_t page_size,
|
| uint64_t id,
|
| StringPiece name) {
|
| - SetGlobalAllocator(make_scoped_ptr(new PersistentHistogramAllocator(
|
| - make_scoped_ptr(new PersistentMemoryAllocator(
|
| - base, size, page_size, id, name, false)))));
|
| + SetGlobalAllocator(WrapUnique(new PersistentHistogramAllocator(
|
| + WrapUnique(new PersistentMemoryAllocator(base, size, page_size, id,
|
| + name, false)))));
|
| }
|
|
|
| // static
|
| @@ -249,27 +251,28 @@ void PersistentHistogramAllocator::CreateGlobalAllocatorOnLocalMemory(
|
| size_t size,
|
| uint64_t id,
|
| StringPiece name) {
|
| - SetGlobalAllocator(make_scoped_ptr(new PersistentHistogramAllocator(
|
| - make_scoped_ptr(new LocalPersistentMemoryAllocator(size, id, name)))));
|
| + SetGlobalAllocator(WrapUnique(new PersistentHistogramAllocator(
|
| + WrapUnique(new LocalPersistentMemoryAllocator(size, id, name)))));
|
| }
|
|
|
| // static
|
| void PersistentHistogramAllocator::CreateGlobalAllocatorOnSharedMemory(
|
| size_t size,
|
| const SharedMemoryHandle& handle) {
|
| - scoped_ptr<SharedMemory> shm(new SharedMemory(handle, /*readonly=*/false));
|
| + std::unique_ptr<SharedMemory> shm(
|
| + new SharedMemory(handle, /*readonly=*/false));
|
| if (!shm->Map(size)) {
|
| NOTREACHED();
|
| return;
|
| }
|
|
|
| - SetGlobalAllocator(make_scoped_ptr(new PersistentHistogramAllocator(
|
| - make_scoped_ptr(new SharedPersistentMemoryAllocator(
|
| + SetGlobalAllocator(WrapUnique(new PersistentHistogramAllocator(
|
| + WrapUnique(new SharedPersistentMemoryAllocator(
|
| std::move(shm), 0, StringPiece(), /*readonly=*/false)))));
|
| }
|
|
|
| // static
|
| -scoped_ptr<HistogramBase> PersistentHistogramAllocator::CreateHistogram(
|
| +std::unique_ptr<HistogramBase> PersistentHistogramAllocator::CreateHistogram(
|
| PersistentHistogramData* histogram_data_ptr) {
|
| if (!histogram_data_ptr) {
|
| RecordCreateHistogramResult(CREATE_HISTOGRAM_INVALID_METADATA_POINTER);
|
| @@ -279,10 +282,11 @@ scoped_ptr<HistogramBase> PersistentHistogramAllocator::CreateHistogram(
|
|
|
| // Sparse histograms are quite different so handle them as a special case.
|
| if (histogram_data_ptr->histogram_type == SPARSE_HISTOGRAM) {
|
| - scoped_ptr<HistogramBase> histogram = SparseHistogram::PersistentCreate(
|
| - memory_allocator(), histogram_data_ptr->name,
|
| - &histogram_data_ptr->samples_metadata,
|
| - &histogram_data_ptr->logged_metadata);
|
| + std::unique_ptr<HistogramBase> histogram =
|
| + SparseHistogram::PersistentCreate(memory_allocator(),
|
| + histogram_data_ptr->name,
|
| + &histogram_data_ptr->samples_metadata,
|
| + &histogram_data_ptr->logged_metadata);
|
| DCHECK(histogram);
|
| histogram->SetFlags(histogram_data_ptr->flags);
|
| RecordCreateHistogramResult(CREATE_HISTOGRAM_SUCCESS);
|
| @@ -314,7 +318,7 @@ scoped_ptr<HistogramBase> PersistentHistogramAllocator::CreateHistogram(
|
| return nullptr;
|
| }
|
|
|
| - scoped_ptr<const BucketRanges> created_ranges =
|
| + std::unique_ptr<const BucketRanges> created_ranges =
|
| CreateRangesFromData(ranges_data, histogram_data.ranges_checksum,
|
| histogram_data.bucket_count + 1);
|
| if (!created_ranges) {
|
| @@ -346,7 +350,7 @@ scoped_ptr<HistogramBase> PersistentHistogramAllocator::CreateHistogram(
|
| counts_data + histogram_data.bucket_count;
|
|
|
| std::string name(histogram_data_ptr->name);
|
| - scoped_ptr<HistogramBase> histogram;
|
| + std::unique_ptr<HistogramBase> histogram;
|
| switch (histogram_data.histogram_type) {
|
| case HISTOGRAM:
|
| histogram = Histogram::PersistentCreate(
|
| @@ -393,7 +397,7 @@ scoped_ptr<HistogramBase> PersistentHistogramAllocator::CreateHistogram(
|
| return histogram;
|
| }
|
|
|
| -scoped_ptr<HistogramBase> PersistentHistogramAllocator::GetHistogram(
|
| +std::unique_ptr<HistogramBase> PersistentHistogramAllocator::GetHistogram(
|
| Reference ref) {
|
| // Unfortunately, the histogram "pickle" methods cannot be used as part of
|
| // the persistance because the deserialization methods always create local
|
| @@ -413,7 +417,7 @@ scoped_ptr<HistogramBase> PersistentHistogramAllocator::GetHistogram(
|
| return CreateHistogram(histogram_data);
|
| }
|
|
|
| -scoped_ptr<HistogramBase>
|
| +std::unique_ptr<HistogramBase>
|
| PersistentHistogramAllocator::GetNextHistogramWithIgnore(Iterator* iter,
|
| Reference ignore) {
|
| PersistentMemoryAllocator::Reference ref;
|
| @@ -441,7 +445,7 @@ void PersistentHistogramAllocator::FinalizeHistogram(Reference ref,
|
| memory_allocator_->SetType(ref, 0);
|
| }
|
|
|
| -scoped_ptr<HistogramBase> PersistentHistogramAllocator::AllocateHistogram(
|
| +std::unique_ptr<HistogramBase> PersistentHistogramAllocator::AllocateHistogram(
|
| HistogramType histogram_type,
|
| const std::string& name,
|
| int minimum,
|
| @@ -521,7 +525,7 @@ scoped_ptr<HistogramBase> PersistentHistogramAllocator::AllocateHistogram(
|
| // using what is already known above but avoids duplicating the switch
|
| // statement here and serves as a double-check that everything is
|
| // correct before commiting the new histogram to persistent space.
|
| - scoped_ptr<HistogramBase> histogram = CreateHistogram(histogram_data);
|
| + std::unique_ptr<HistogramBase> histogram = CreateHistogram(histogram_data);
|
| DCHECK(histogram);
|
| if (ref_ptr != nullptr)
|
| *ref_ptr = histogram_ref;
|
| @@ -575,7 +579,7 @@ void PersistentHistogramAllocator::ImportGlobalHistograms() {
|
| subtle::NoBarrier_Load(&g_allocator->last_created_);
|
|
|
| while (true) {
|
| - scoped_ptr<HistogramBase> histogram =
|
| + std::unique_ptr<HistogramBase> histogram =
|
| g_allocator->GetNextHistogramWithIgnore(&iter, last_created);
|
| if (!histogram)
|
| break;
|
|
|