MCPcopy Create free account
hub / github.com/CppCXY/EmmyLuaCodeStyle / mi_bitmap_is_claimedx_across

Function mi_bitmap_is_claimedx_across

3rd/mimalloc-2.0.9/src/bitmap.c:380–404  ·  view source on GitHub ↗

Returns `true` if all `count` bits were 1. `any_ones` is `true` if there was at least one bit set to one.

Source from the content-addressed store, hash-verified

378// Returns `true` if all `count` bits were 1.
379// `any_ones` is `true` if there was at least one bit set to one.
380static 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
406bool _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);

Callers 2

Calls 2

mi_bitmap_index_fieldFunction · 0.85
mi_bitmap_mask_acrossFunction · 0.85

Tested by

no test coverage detected