OLD | NEW |
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 VM_BIT_VECTOR_H_ | 5 #ifndef VM_BIT_VECTOR_H_ |
6 #define VM_BIT_VECTOR_H_ | 6 #define VM_BIT_VECTOR_H_ |
7 | 7 |
8 #include "vm/allocation.h" | 8 #include "vm/allocation.h" |
9 #include "vm/isolate.h" | 9 #include "vm/isolate.h" |
10 #include "vm/zone.h" | 10 #include "vm/zone.h" |
(...skipping 30 matching lines...) Expand all Loading... |
41 intptr_t word_index_; | 41 intptr_t word_index_; |
42 uword current_word_; | 42 uword current_word_; |
43 | 43 |
44 friend class BitVector; | 44 friend class BitVector; |
45 }; | 45 }; |
46 | 46 |
47 explicit BitVector(intptr_t length) | 47 explicit BitVector(intptr_t length) |
48 : length_(length), | 48 : length_(length), |
49 data_length_(SizeFor(length)), | 49 data_length_(SizeFor(length)), |
50 data_(Isolate::Current()->current_zone()->Alloc<uword>(data_length_)) { | 50 data_(Isolate::Current()->current_zone()->Alloc<uword>(data_length_)) { |
51 ASSERT(length > 0); | |
52 Clear(); | 51 Clear(); |
53 } | 52 } |
54 | 53 |
55 void CopyFrom(const BitVector* other) { | 54 void CopyFrom(const BitVector* other) { |
56 Clear(); | 55 Clear(); |
57 AddAll(other); | 56 AddAll(other); |
58 } | 57 } |
59 | 58 |
60 static intptr_t SizeFor(intptr_t length) { | 59 static intptr_t SizeFor(intptr_t length) { |
61 return 1 + ((length - 1) / kBitsPerWord); | 60 return 1 + ((length - 1) / kBitsPerWord); |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
111 intptr_t length_; | 110 intptr_t length_; |
112 intptr_t data_length_; | 111 intptr_t data_length_; |
113 uword* data_; | 112 uword* data_; |
114 | 113 |
115 DISALLOW_COPY_AND_ASSIGN(BitVector); | 114 DISALLOW_COPY_AND_ASSIGN(BitVector); |
116 }; | 115 }; |
117 | 116 |
118 } // namespace dart | 117 } // namespace dart |
119 | 118 |
120 #endif // VM_BIT_VECTOR_H_ | 119 #endif // VM_BIT_VECTOR_H_ |
OLD | NEW |