MCPcopy Create free account
hub / github.com/emscripten-core/emscripten / mi_bitmap_bsr

Function mi_bitmap_bsr

system/lib/mimalloc/src/bitmap.c:1351–1368  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1349
1350
1351bool mi_bitmap_bsr(mi_bitmap_t* bitmap, size_t* idx) {
1352 const size_t chunkmap_max = _mi_divide_up(mi_bitmap_chunk_count(bitmap), MI_BFIELD_BITS);
1353 for (size_t i = chunkmap_max; i > 0; ) {
1354 i--;
1355 mi_bfield_t cmap = mi_atomic_load_relaxed(&bitmap->chunkmap.bfields[i]);
1356 size_t cmap_idx;
1357 if (mi_bsr(cmap,&cmap_idx)) {
1358 // highest chunk
1359 const size_t chunk_idx = i*MI_BFIELD_BITS + cmap_idx;
1360 size_t cidx;
1361 if (mi_bchunk_bsr(&bitmap->chunks[chunk_idx], &cidx)) {
1362 *idx = (chunk_idx * MI_BCHUNK_BITS) + cidx;
1363 return true;
1364 }
1365 }
1366 }
1367 return false;
1368}
1369
1370// Return count of all set bits in a bitmap.
1371size_t mi_bitmap_popcount(mi_bitmap_t* bitmap) {

Callers 1

bitmap.hFile · 0.85

Calls 3

_mi_divide_upFunction · 0.85
mi_bsrFunction · 0.85
mi_bchunk_bsrFunction · 0.85

Tested by

no test coverage detected