14 if (current_word_ == 0) {
18 current_word_ = target_->data_[word_index_];
19 }
while (current_word_ == 0);
23 while ((current_word_ & 0xff) == 0) {
28 while ((current_word_ & 0x1) == 0) {
32 current_word_ = current_word_ >> 1;
36 if (length_ != other.length_)
return false;
38 for (;
i < data_length_ - 1;
i++) {
39 if (data_[
i] != other.data_[
i])
return false;
41 if (
i < data_length_) {
42 if (length_ %
kBitsPerWord == 0)
return data_[
i] == other.data_[
i];
46 const uword mask =
static_cast<uword>(-1) >> shift_size;
47 if ((data_[
i] & mask) != (other.data_[
i] & mask))
return false;
53 ASSERT(data_length_ == from->data_length_);
55 for (intptr_t
i = 0;
i < data_length_;
i++) {
56 const uword before = data_[
i];
57 const uword after = data_[
i] | from->data_[
i];
58 if (before != after) {
67 ASSERT(data_length_ == from->data_length_);
69 for (intptr_t
i = 0;
i < data_length_;
i++) {
70 const uword before = data_[
i];
71 const uword after = data_[
i] & ~from->data_[
i];
72 if (before != after) {
81 ASSERT(data_length_ == kill->data_length_);
82 ASSERT(data_length_ ==
gen->data_length_);
84 for (intptr_t
i = 0;
i < data_length_;
i++) {
85 const uword before = data_[
i];
86 const uword after = data_[
i] | (
gen->data_[
i] & ~kill->data_[
i]);
87 if (before != after) changed =
true;
95 for (intptr_t
i = 0;
i < data_length_;
i++) {
96 data_[
i] = data_[
i] & other->data_[
i];
101 for (intptr_t
i = 0;
i < data_length_;
i++) {
111 for (intptr_t
i = 0;
i < length_;
i++) {
bool Equals(const BitVector &other) const
bool KillAndAdd(BitVector *kill, BitVector *gen)
bool RemoveAll(const BitVector *from)
bool Contains(intptr_t i) const
bool AddAll(const BitVector *from)
void Intersect(const BitVector *other)
#define THR_Print(format,...)
constexpr intptr_t kBitsPerWord