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

Side by Side Diff: base/metrics/persistent_memory_allocator.cc

Issue 1891913002: Support saving browser metrics to disk and reading them during next run. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: removed some unnecessary includes Created 4 years, 7 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 unified diff | Download patch
« no previous file with comments | « base/metrics/persistent_memory_allocator.h ('k') | base/metrics/sparse_histogram.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2015 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "base/metrics/persistent_memory_allocator.h" 5 #include "base/metrics/persistent_memory_allocator.h"
6 6
7 #include <assert.h> 7 #include <assert.h>
8 #include <algorithm> 8 #include <algorithm>
9 9
10 #include "base/files/memory_mapped_file.h" 10 #include "base/files/memory_mapped_file.h"
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after
110 volatile BlockHeader queue; // Empty block for linked-list head/tail. 110 volatile BlockHeader queue; // Empty block for linked-list head/tail.
111 }; 111 };
112 112
113 // The "queue" block header is used to detect "last node" so that zero/null 113 // The "queue" block header is used to detect "last node" so that zero/null
114 // can be used to indicate that it hasn't been added at all. It is part of 114 // can be used to indicate that it hasn't been added at all. It is part of
115 // the SharedMetadata structure which itself is always located at offset zero. 115 // the SharedMetadata structure which itself is always located at offset zero.
116 const PersistentMemoryAllocator::Reference 116 const PersistentMemoryAllocator::Reference
117 PersistentMemoryAllocator::kReferenceQueue = 117 PersistentMemoryAllocator::kReferenceQueue =
118 offsetof(SharedMetadata, queue); 118 offsetof(SharedMetadata, queue);
119 119
120 const base::FilePath::CharType PersistentMemoryAllocator::kFileExtension[] =
121 FILE_PATH_LITERAL(".pma");
122
123
120 PersistentMemoryAllocator::Iterator::Iterator( 124 PersistentMemoryAllocator::Iterator::Iterator(
121 const PersistentMemoryAllocator* allocator) 125 const PersistentMemoryAllocator* allocator)
122 : allocator_(allocator), last_record_(kReferenceQueue), record_count_(0) {} 126 : allocator_(allocator), last_record_(kReferenceQueue), record_count_(0) {}
123 127
124 PersistentMemoryAllocator::Iterator::Iterator( 128 PersistentMemoryAllocator::Iterator::Iterator(
125 const PersistentMemoryAllocator* allocator, 129 const PersistentMemoryAllocator* allocator,
126 Reference starting_after) 130 Reference starting_after)
127 : allocator_(allocator), last_record_(starting_after), record_count_(0) { 131 : allocator_(allocator), last_record_(starting_after), record_count_(0) {
128 // Ensure that the starting point is a valid, iterable block (meaning it can 132 // Ensure that the starting point is a valid, iterable block (meaning it can
129 // be read and has a non-zero "next" pointer). 133 // be read and has a non-zero "next" pointer).
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
220 PersistentMemoryAllocator::Iterator::GetNextOfType(uint32_t type_match) { 224 PersistentMemoryAllocator::Iterator::GetNextOfType(uint32_t type_match) {
221 Reference ref; 225 Reference ref;
222 uint32_t type_found; 226 uint32_t type_found;
223 while ((ref = GetNext(&type_found)) != 0) { 227 while ((ref = GetNext(&type_found)) != 0) {
224 if (type_found == type_match) 228 if (type_found == type_match)
225 return ref; 229 return ref;
226 } 230 }
227 return kReferenceNull; 231 return kReferenceNull;
228 } 232 }
229 233
234
230 // static 235 // static
231 bool PersistentMemoryAllocator::IsMemoryAcceptable(const void* base, 236 bool PersistentMemoryAllocator::IsMemoryAcceptable(const void* base,
232 size_t size, 237 size_t size,
233 size_t page_size, 238 size_t page_size,
234 bool readonly) { 239 bool readonly) {
235 return ((base && reinterpret_cast<uintptr_t>(base) % kAllocAlignment == 0) && 240 return ((base && reinterpret_cast<uintptr_t>(base) % kAllocAlignment == 0) &&
236 (size >= sizeof(SharedMetadata) && size <= kSegmentMaxSize) && 241 (size >= sizeof(SharedMetadata) && size <= kSegmentMaxSize) &&
237 (size >= kSegmentMinSize || readonly) && 242 (size >= kSegmentMinSize || readonly) &&
238 (size % kAllocAlignment == 0 || readonly) && 243 (size % kAllocAlignment == 0 || readonly) &&
239 (page_size == 0 || size % page_size == 0 || readonly)); 244 (page_size == 0 || size % page_size == 0 || readonly));
(...skipping 519 matching lines...) Expand 10 before | Expand all | Expand 10 after
759 764
760 FilePersistentMemoryAllocator::~FilePersistentMemoryAllocator() {} 765 FilePersistentMemoryAllocator::~FilePersistentMemoryAllocator() {}
761 766
762 // static 767 // static
763 bool FilePersistentMemoryAllocator::IsFileAcceptable( 768 bool FilePersistentMemoryAllocator::IsFileAcceptable(
764 const MemoryMappedFile& file) { 769 const MemoryMappedFile& file) {
765 return IsMemoryAcceptable(file.data(), file.length(), 0, true); 770 return IsMemoryAcceptable(file.data(), file.length(), 0, true);
766 } 771 }
767 772
768 } // namespace base 773 } // namespace base
OLDNEW
« no previous file with comments | « base/metrics/persistent_memory_allocator.h ('k') | base/metrics/sparse_histogram.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698