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

Side by Side Diff: net/disk_cache/blockfile/stats.cc

Issue 826973002: replace COMPILE_ASSERT with static_assert in net/ (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: apply fixups Created 5 years, 11 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 | « net/disk_cache/blockfile/file_win.cc ('k') | net/disk_cache/entry_unittest.cc » ('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) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 "net/disk_cache/blockfile/stats.h" 5 #include "net/disk_cache/blockfile/stats.h"
6 6
7 #include "base/format_macros.h" 7 #include "base/format_macros.h"
8 #include "base/logging.h" 8 #include "base/logging.h"
9 #include "base/metrics/bucket_ranges.h" 9 #include "base/metrics/bucket_ranges.h"
10 #include "base/metrics/histogram.h" 10 #include "base/metrics/histogram.h"
11 #include "base/metrics/histogram_samples.h" 11 #include "base/metrics/histogram_samples.h"
12 #include "base/metrics/sample_vector.h" 12 #include "base/metrics/sample_vector.h"
13 #include "base/metrics/statistics_recorder.h" 13 #include "base/metrics/statistics_recorder.h"
14 #include "base/strings/string_util.h" 14 #include "base/strings/string_util.h"
15 #include "base/strings/stringprintf.h" 15 #include "base/strings/stringprintf.h"
16 16
17 namespace { 17 namespace {
18 18
19 const int32 kDiskSignature = 0xF01427E0; 19 const int32 kDiskSignature = 0xF01427E0;
20 20
21 struct OnDiskStats { 21 struct OnDiskStats {
22 int32 signature; 22 int32 signature;
23 int size; 23 int size;
24 int data_sizes[disk_cache::Stats::kDataSizesLength]; 24 int data_sizes[disk_cache::Stats::kDataSizesLength];
25 int64 counters[disk_cache::Stats::MAX_COUNTER]; 25 int64 counters[disk_cache::Stats::MAX_COUNTER];
26 }; 26 };
27 COMPILE_ASSERT(sizeof(OnDiskStats) < 512, needs_more_than_2_blocks); 27 static_assert(sizeof(OnDiskStats) < 512, "needs more than 2 blocks");
28 28
29 // Returns the "floor" (as opposed to "ceiling") of log base 2 of number. 29 // Returns the "floor" (as opposed to "ceiling") of log base 2 of number.
30 int LogBase2(int32 number) { 30 int LogBase2(int32 number) {
31 unsigned int value = static_cast<unsigned int>(number); 31 unsigned int value = static_cast<unsigned int>(number);
32 const unsigned int mask[] = {0x2, 0xC, 0xF0, 0xFF00, 0xFFFF0000}; 32 const unsigned int mask[] = {0x2, 0xC, 0xF0, 0xFF00, 0xFFFF0000};
33 const unsigned int s[] = {1, 2, 4, 8, 16}; 33 const unsigned int s[] = {1, 2, 4, 8, 16};
34 34
35 unsigned int result = 0; 35 unsigned int result = 0;
36 for (int i = 4; i >= 0; i--) { 36 for (int i = 4; i >= 0; i--) {
37 if (value & mask[i]) { 37 if (value & mask[i]) {
(...skipping 22 matching lines...) Expand all
60 "Read data", 60 "Read data",
61 "Write data", 61 "Write data",
62 "Open rankings", 62 "Open rankings",
63 "Get rankings", 63 "Get rankings",
64 "Fatal error", 64 "Fatal error",
65 "Last report", 65 "Last report",
66 "Last report timer", 66 "Last report timer",
67 "Doom recent entries", 67 "Doom recent entries",
68 "unused" 68 "unused"
69 }; 69 };
70 COMPILE_ASSERT(arraysize(kCounterNames) == disk_cache::Stats::MAX_COUNTER, 70 static_assert(arraysize(kCounterNames) == disk_cache::Stats::MAX_COUNTER,
71 update_the_names); 71 "update the names");
72 72
73 } // namespace 73 } // namespace
74 74
75 namespace disk_cache { 75 namespace disk_cache {
76 76
77 bool VerifyStats(OnDiskStats* stats) { 77 bool VerifyStats(OnDiskStats* stats) {
78 if (stats->signature != kDiskSignature) 78 if (stats->signature != kDiskSignature)
79 return false; 79 return false;
80 80
81 // We don't want to discard the whole cache every time we have one extra 81 // We don't want to discard the whole cache every time we have one extra
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
148 data_sizes_[i] = 0; 148 data_sizes_[i] = 0;
149 149
150 samples.Accumulate(GetBucketRange(i) / 1024, data_sizes_[i]); 150 samples.Accumulate(GetBucketRange(i) / 1024, data_sizes_[i]);
151 } 151 }
152 stats_histogram->AddSamples(samples); 152 stats_histogram->AddSamples(samples);
153 } 153 }
154 154
155 int Stats::StorageSize() { 155 int Stats::StorageSize() {
156 // If we have more than 512 bytes of counters, change kDiskSignature so we 156 // If we have more than 512 bytes of counters, change kDiskSignature so we
157 // don't overwrite something else (LoadStats must fail). 157 // don't overwrite something else (LoadStats must fail).
158 COMPILE_ASSERT(sizeof(OnDiskStats) <= 256 * 2, use_more_blocks); 158 static_assert(sizeof(OnDiskStats) <= 256 * 2, "use more blocks");
159 return 256 * 2; 159 return 256 * 2;
160 } 160 }
161 161
162 void Stats::ModifyStorageStats(int32 old_size, int32 new_size) { 162 void Stats::ModifyStorageStats(int32 old_size, int32 new_size) {
163 // We keep a counter of the data block size on an array where each entry is 163 // We keep a counter of the data block size on an array where each entry is
164 // the adjusted log base 2 of the size. The first entry counts blocks of 256 164 // the adjusted log base 2 of the size. The first entry counts blocks of 256
165 // bytes, the second blocks up to 512 bytes, etc. With 20 entries, the last 165 // bytes, the second blocks up to 512 bytes, etc. With 20 entries, the last
166 // one stores entries of more than 64 MB 166 // one stores entries of more than 64 MB
167 int new_index = GetStatsBucket(new_size); 167 int new_index = GetStatsBucket(new_size);
168 int old_index = GetStatsBucket(old_size); 168 int old_index = GetStatsBucket(old_size);
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after
293 if (size < 20 * 1024) 293 if (size < 20 * 1024)
294 return size / 2048 + 1; 294 return size / 2048 + 1;
295 295
296 // 5 slots more, from 20K to 40K. 296 // 5 slots more, from 20K to 40K.
297 if (size < 40 * 1024) 297 if (size < 40 * 1024)
298 return (size - 20 * 1024) / 4096 + 11; 298 return (size - 20 * 1024) / 4096 + 11;
299 299
300 // From this point on, use a logarithmic scale. 300 // From this point on, use a logarithmic scale.
301 int result = LogBase2(size) + 1; 301 int result = LogBase2(size) + 1;
302 302
303 COMPILE_ASSERT(kDataSizesLength > 16, update_the_scale); 303 static_assert(kDataSizesLength > 16, "update the scale");
304 if (result >= kDataSizesLength) 304 if (result >= kDataSizesLength)
305 result = kDataSizesLength - 1; 305 result = kDataSizesLength - 1;
306 306
307 return result; 307 return result;
308 } 308 }
309 309
310 int Stats::GetRatio(Counters hit, Counters miss) const { 310 int Stats::GetRatio(Counters hit, Counters miss) const {
311 int64 ratio = GetCounter(hit) * 100; 311 int64 ratio = GetCounter(hit) * 100;
312 if (!ratio) 312 if (!ratio)
313 return 0; 313 return 0;
314 314
315 ratio /= (GetCounter(hit) + GetCounter(miss)); 315 ratio /= (GetCounter(hit) + GetCounter(miss));
316 return static_cast<int>(ratio); 316 return static_cast<int>(ratio);
317 } 317 }
318 318
319 } // namespace disk_cache 319 } // namespace disk_cache
OLDNEW
« no previous file with comments | « net/disk_cache/blockfile/file_win.cc ('k') | net/disk_cache/entry_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698