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

Side by Side Diff: courgette/label_manager.cc

Issue 1543643002: Switch to standard integer types in courgette/. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix Created 4 years, 12 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 | « courgette/label_manager.h ('k') | courgette/label_manager_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 2015 The Chromium Authors. All rights reserved. 1 // Copyright 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 "courgette/label_manager.h" 5 #include "courgette/label_manager.h"
6 6
7 #include <stddef.h>
8 #include <stdint.h>
9
7 #include <algorithm> 10 #include <algorithm>
8 11
9 #include "base/logging.h" 12 #include "base/logging.h"
10 #include "base/numerics/safe_math.h" 13 #include "base/numerics/safe_math.h"
11 #include "courgette/consecutive_range_visitor.h" 14 #include "courgette/consecutive_range_visitor.h"
12 15
13 namespace courgette { 16 namespace courgette {
14 17
15 LabelManager::RvaVisitor::~RvaVisitor() {} 18 LabelManager::RvaVisitor::~RvaVisitor() {}
16 19
(...skipping 23 matching lines...) Expand all
40 std::sort(rvas.begin(), rvas.end()); 43 std::sort(rvas.begin(), rvas.end());
41 size_t num_distinct_rva = 0; 44 size_t num_distinct_rva = 0;
42 for (CRV it(rvas.begin(), rvas.end()); it.has_more(); it.advance()) 45 for (CRV it(rvas.begin(), rvas.end()); it.has_more(); it.advance())
43 ++num_distinct_rva; 46 ++num_distinct_rva;
44 47
45 // Reserve space for |labels_|, populate with sorted RVA and repeats. 48 // Reserve space for |labels_|, populate with sorted RVA and repeats.
46 DCHECK(labels_.empty()); 49 DCHECK(labels_.empty());
47 labels_.reserve(num_distinct_rva); 50 labels_.reserve(num_distinct_rva);
48 for (CRV it(rvas.begin(), rvas.end()); it.has_more(); it.advance()) { 51 for (CRV it(rvas.begin(), rvas.end()); it.has_more(); it.advance()) {
49 labels_.push_back(Label(*it.cur())); 52 labels_.push_back(Label(*it.cur()));
50 base::CheckedNumeric<uint32> count = it.repeat(); 53 base::CheckedNumeric<uint32_t> count = it.repeat();
51 labels_.back().count_ = count.ValueOrDie(); 54 labels_.back().count_ = count.ValueOrDie();
52 } 55 }
53 } 56 }
54 57
55 void LabelManager::RemoveUnderusedLabels(int32 count_threshold) { 58 void LabelManager::RemoveUnderusedLabels(int32_t count_threshold) {
56 if (count_threshold <= 0) 59 if (count_threshold <= 0)
57 return; 60 return;
58 labels_.erase(std::remove_if(labels_.begin(), labels_.end(), 61 labels_.erase(std::remove_if(labels_.begin(), labels_.end(),
59 [count_threshold](const Label& label) { 62 [count_threshold](const Label& label) {
60 return label.count_ < count_threshold; 63 return label.count_ < count_threshold;
61 }), 64 }),
62 labels_.end()); 65 labels_.end());
63 // Not shrinking |labels_|, since this may cause reallocation. 66 // Not shrinking |labels_|, since this may cause reallocation.
64 } 67 }
65 68
66 // Uses binary search to find |rva|. 69 // Uses binary search to find |rva|.
67 Label* LabelManager::Find(RVA rva) { 70 Label* LabelManager::Find(RVA rva) {
68 auto it = std::lower_bound( 71 auto it = std::lower_bound(
69 labels_.begin(), labels_.end(), Label(rva), 72 labels_.begin(), labels_.end(), Label(rva),
70 [](const Label& l1, const Label& l2) { return l1.rva_ < l2.rva_; }); 73 [](const Label& l1, const Label& l2) { return l1.rva_ < l2.rva_; });
71 return it == labels_.end() || it->rva_ != rva ? nullptr : &(*it); 74 return it == labels_.end() || it->rva_ != rva ? nullptr : &(*it);
72 } 75 }
73 76
74 } // namespace courgette 77 } // namespace courgette
OLDNEW
« no previous file with comments | « courgette/label_manager.h ('k') | courgette/label_manager_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698