Chromium Code Reviews| Index: runtime/vm/bit_vector.cc |
| diff --git a/runtime/vm/bit_vector.cc b/runtime/vm/bit_vector.cc |
| index c08eaf1d4de538d751c80574782514bdaae42923..80b640b247c38304c234c041209f2aed873e3e1f 100644 |
| --- a/runtime/vm/bit_vector.cc |
| +++ b/runtime/vm/bit_vector.cc |
| @@ -62,6 +62,18 @@ bool BitVector::AddAll(const BitVector* from) { |
| } |
| +bool BitVector::RemoveAll(const BitVector* from) { |
|
Florian Schneider
2012/12/13 13:21:06
Please also add a test case to bit_vector_test.cc.
Vyacheslav Egorov (Google)
2012/12/13 14:02:59
Done.
|
| + ASSERT(data_length_ == from->data_length_); |
| + bool changed = false; |
| + for (intptr_t i = 0; i < data_length_; i++) { |
| + const uword before = data_[i]; |
| + const uword after = data_[i] & ~from->data_[i]; |
| + if (before != after) changed = true; |
| + data_[i] = after; |
| + } |
| + return changed; |
| +} |
| + |
| bool BitVector::KillAndAdd(BitVector* kill, BitVector* gen) { |
| ASSERT(data_length_ == kill->data_length_); |
| ASSERT(data_length_ == gen->data_length_); |