MCPcopy Create free account
hub / github.com/Snapchat/KeyDB / bitmap_sfu

Function bitmap_sfu

deps/jemalloc/include/jemalloc/internal/bitmap.h:300–328  ·  view source on GitHub ↗

sfu: set first unset. */

Source from the content-addressed store, hash-verified

298
299/* sfu: set first unset. */
300static inline size_t
301bitmap_sfu(bitmap_t *bitmap, const bitmap_info_t *binfo) {
302 size_t bit;
303 bitmap_t g;
304 unsigned i;
305
306 assert(!bitmap_full(bitmap, binfo));
307
308#ifdef BITMAP_USE_TREE
309 i = binfo->nlevels - 1;
310 g = bitmap[binfo->levels[i].group_offset];
311 bit = ffs_lu(g) - 1;
312 while (i > 0) {
313 i--;
314 g = bitmap[binfo->levels[i].group_offset + bit];
315 bit = (bit << LG_BITMAP_GROUP_NBITS) + (ffs_lu(g) - 1);
316 }
317#else
318 i = 0;
319 g = bitmap[0];
320 while ((bit = ffs_lu(g)) == 0) {
321 i++;
322 g = bitmap[i];
323 }
324 bit = (i << LG_BITMAP_GROUP_NBITS) + (bit - 1);
325#endif
326 bitmap_set(bitmap, binfo, bit);
327 return bit;
328}
329
330static inline void
331bitmap_unset(bitmap_t *bitmap, const bitmap_info_t *binfo, size_t bit) {

Callers 3

test_bitmap_xfu_bodyFunction · 0.50
arena_slab_reg_allocFunction · 0.50

Calls 3

bitmap_fullFunction · 0.70
ffs_luFunction · 0.70
bitmap_setFunction · 0.70

Tested by 1

test_bitmap_xfu_bodyFunction · 0.40