Returns `true` if all `count` bits were 1. `any_ones` is `true` if there was at least one bit set to one.
| 378 | // Returns `true` if all `count` bits were 1. |
| 379 | // `any_ones` is `true` if there was at least one bit set to one. |
| 380 | static bool mi_bitmap_is_claimedx_across(mi_bitmap_t bitmap, size_t bitmap_fields, size_t count, mi_bitmap_index_t bitmap_idx, bool* pany_ones) { |
| 381 | size_t idx = mi_bitmap_index_field(bitmap_idx); |
| 382 | size_t pre_mask; |
| 383 | size_t mid_mask; |
| 384 | size_t post_mask; |
| 385 | size_t mid_count = mi_bitmap_mask_across(bitmap_idx, bitmap_fields, count, &pre_mask, &mid_mask, &post_mask); |
| 386 | bool all_ones = true; |
| 387 | bool any_ones = false; |
| 388 | mi_bitmap_field_t* field = &bitmap[idx]; |
| 389 | size_t prev = mi_atomic_load_relaxed(field++); |
| 390 | if ((prev & pre_mask) != pre_mask) all_ones = false; |
| 391 | if ((prev & pre_mask) != 0) any_ones = true; |
| 392 | while (mid_count-- > 0) { |
| 393 | prev = mi_atomic_load_relaxed(field++); |
| 394 | if ((prev & mid_mask) != mid_mask) all_ones = false; |
| 395 | if ((prev & mid_mask) != 0) any_ones = true; |
| 396 | } |
| 397 | if (post_mask!=0) { |
| 398 | prev = mi_atomic_load_relaxed(field); |
| 399 | if ((prev & post_mask) != post_mask) all_ones = false; |
| 400 | if ((prev & post_mask) != 0) any_ones = true; |
| 401 | } |
| 402 | if (pany_ones != NULL) *pany_ones = any_ones; |
| 403 | return all_ones; |
| 404 | } |
| 405 | |
| 406 | bool _mi_bitmap_is_claimed_across(mi_bitmap_t bitmap, size_t bitmap_fields, size_t count, mi_bitmap_index_t bitmap_idx) { |
| 407 | return mi_bitmap_is_claimedx_across(bitmap, bitmap_fields, count, bitmap_idx, NULL); |
no test coverage detected