| 56 | |
| 57 | template <class Callback> |
| 58 | ATTRIBUTE_NO_SANITIZE_ALL |
| 59 | void ForEach(Callback CB) const { |
| 60 | for (size_t i = 0; i < kMapSizeInWords; i++) |
| 61 | if (uintptr_t M = Map[i]) |
| 62 | for (size_t j = 0; j < sizeof(M) * 8; j++) |
| 63 | if (M & ((uintptr_t)1 << j)) |
| 64 | CB(i * sizeof(M) * 8 + j); |
| 65 | } |
| 66 | |
| 67 | private: |
| 68 | ATTRIBUTE_ALIGNED(512) uintptr_t Map[kMapSizeInWords]; |