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

Side by Side Diff: runtime/vm/bit_set.h

Issue 2481873005: clang-format runtime/vm (Closed)
Patch Set: Merge Created 4 years, 1 month 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 | « runtime/vm/bigint_test.cc ('k') | runtime/vm/bit_set_test.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) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 #ifndef RUNTIME_VM_BIT_SET_H_ 5 #ifndef RUNTIME_VM_BIT_SET_H_
6 #define RUNTIME_VM_BIT_SET_H_ 6 #define RUNTIME_VM_BIT_SET_H_
7 7
8 #include "platform/utils.h" 8 #include "platform/utils.h"
9 #include "vm/globals.h" 9 #include "vm/globals.h"
10 10
11 namespace dart { 11 namespace dart {
12 12
13 // Just like its namesake in the STL, a BitSet object contains a fixed 13 // Just like its namesake in the STL, a BitSet object contains a fixed
14 // length sequence of bits. 14 // length sequence of bits.
15 template<intptr_t N> 15 template <intptr_t N>
16 class BitSet { 16 class BitSet {
17 public: 17 public:
18 BitSet() { 18 BitSet() { Reset(); }
19 Reset();
20 }
21 19
22 void Set(intptr_t i, bool value) { 20 void Set(intptr_t i, bool value) {
23 ASSERT(i >= 0); 21 ASSERT(i >= 0);
24 ASSERT(i < N); 22 ASSERT(i < N);
25 uword mask = (static_cast<uword>(1) << (i & (kBitsPerWord - 1))); 23 uword mask = (static_cast<uword>(1) << (i & (kBitsPerWord - 1)));
26 if (value) { 24 if (value) {
27 data_[i >> kBitsPerWordLog2] |= mask; 25 data_[i >> kBitsPerWordLog2] |= mask;
28 } else { 26 } else {
29 data_[i >> kBitsPerWordLog2] &= ~mask; 27 data_[i >> kBitsPerWordLog2] &= ~mask;
30 } 28 }
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
78 } 76 }
79 if (bits == 0) { 77 if (bits == 0) {
80 // None found. 78 // None found.
81 return -1; 79 return -1;
82 } else { 80 } else {
83 // Bitlength incl. w, minus leading zeroes of w, minus 1 to 0-based index. 81 // Bitlength incl. w, minus leading zeroes of w, minus 1 to 0-based index.
84 return ((w + 1) << kBitsPerWordLog2) - Utils::CountLeadingZeros(bits) - 1; 82 return ((w + 1) << kBitsPerWordLog2) - Utils::CountLeadingZeros(bits) - 1;
85 } 83 }
86 } 84 }
87 85
88 void Reset() { 86 void Reset() { memset(data_, 0, sizeof(data_)); }
89 memset(data_, 0, sizeof(data_));
90 }
91 87
92 intptr_t Size() const { 88 intptr_t Size() const { return N; }
93 return N;
94 }
95 89
96 private: 90 private:
97 static const int kLengthInWords = 1 + ((N - 1) / kBitsPerWord); 91 static const int kLengthInWords = 1 + ((N - 1) / kBitsPerWord);
98 uword data_[kLengthInWords]; 92 uword data_[kLengthInWords];
99 }; 93 };
100 94
101 } // namespace dart 95 } // namespace dart
102 96
103 #endif // RUNTIME_VM_BIT_SET_H_ 97 #endif // RUNTIME_VM_BIT_SET_H_
OLDNEW
« no previous file with comments | « runtime/vm/bigint_test.cc ('k') | runtime/vm/bit_set_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698