current_index_(0),
current_value_(target->data_[0]),
current_(-1) {
- ASSERT(target->data_length_ > 0);
+ DCHECK(target->data_length_ > 0);
Advance();
}
~Iterator() { }
void Advance();
int Current() const {
- ASSERT(!Done());
+ DCHECK(!Done());
return current_;
}
: length_(length),
data_length_(SizeFor(length)),
data_(zone->NewArray<uint32_t>(data_length_)) {
- ASSERT(length > 0);
+ DCHECK(length > 0);
Clear();
}
}
void CopyFrom(const BitVector& other) {
- ASSERT(other.length() <= length());
+ DCHECK(other.length() <= length());
for (int i = 0; i < other.data_length_; i++) {
data_[i] = other.data_[i];
}
}
bool Contains(int i) const {
- ASSERT(i >= 0 && i < length());
+ DCHECK(i >= 0 && i < length());
uint32_t block = data_[i / 32];
return (block & (1U << (i % 32))) != 0;
}
void Add(int i) {
- ASSERT(i >= 0 && i < length());
+ DCHECK(i >= 0 && i < length());
data_[i / 32] |= (1U << (i % 32));
}
void Remove(int i) {
- ASSERT(i >= 0 && i < length());
+ DCHECK(i >= 0 && i < length());
data_[i / 32] &= ~(1U << (i % 32));
}
void Union(const BitVector& other) {
- ASSERT(other.length() == length());
+ DCHECK(other.length() == length());
for (int i = 0; i < data_length_; i++) {
data_[i] |= other.data_[i];
}
}
bool UnionIsChanged(const BitVector& other) {
- ASSERT(other.length() == length());
+ DCHECK(other.length() == length());
bool changed = false;
for (int i = 0; i < data_length_; i++) {
uint32_t old_data = data_[i];
}
void Intersect(const BitVector& other) {
- ASSERT(other.length() == length());
+ DCHECK(other.length() == length());
for (int i = 0; i < data_length_; i++) {
data_[i] &= other.data_[i];
}
}
void Subtract(const BitVector& other) {
- ASSERT(other.length() == length());
+ DCHECK(other.length() == length());
for (int i = 0; i < data_length_; i++) {
data_[i] &= ~other.data_[i];
}
return true;
}
+ int Count() const {
+ int count = 0;
+ for (int i = 0; i < data_length_; i++) {
+ int data = data_[i];
+ if (data != 0) count += CompilerIntrinsics::CountSetBits(data);
+ }
+ return count;
+ }
+
int length() const { return length_; }
#ifdef DEBUG