diff options
author | Jason Evans <jasone@canonware.com> | 2016-04-06 17:38:47 (GMT) |
---|---|---|
committer | Jason Evans <jasone@canonware.com> | 2016-04-06 17:38:47 (GMT) |
commit | 2ee2f1ec57d9094643db60210c28b989f2e7da83 (patch) | |
tree | 6bbc3e6544a048211a93384fd997e9d5d07bad37 | |
parent | 4a8abbb400afe695f145a487380c04a946500bc6 (diff) | |
download | jemalloc-2ee2f1ec57d9094643db60210c28b989f2e7da83.zip jemalloc-2ee2f1ec57d9094643db60210c28b989f2e7da83.tar.gz jemalloc-2ee2f1ec57d9094643db60210c28b989f2e7da83.tar.bz2 |
Reduce differences between alternative bitmap implementations.
-rw-r--r-- | include/jemalloc/internal/bitmap.h | 2 | ||||
-rw-r--r-- | src/bitmap.c | 11 |
2 files changed, 5 insertions, 8 deletions
diff --git a/include/jemalloc/internal/bitmap.h b/include/jemalloc/internal/bitmap.h index 0e0d247..894695f 100644 --- a/include/jemalloc/internal/bitmap.h +++ b/include/jemalloc/internal/bitmap.h @@ -223,7 +223,7 @@ bitmap_sfu(bitmap_t *bitmap, const bitmap_info_t *binfo) i++; g = bitmap[i]; } - bit = (bit - 1) + (i << LG_BITMAP_GROUP_NBITS); + bit = (i << LG_BITMAP_GROUP_NBITS) + (bit - 1); #endif bitmap_set(bitmap, binfo, bit); return (bit); diff --git a/src/bitmap.c b/src/bitmap.c index b1e6627..ac0f3b3 100644 --- a/src/bitmap.c +++ b/src/bitmap.c @@ -74,15 +74,11 @@ bitmap_init(bitmap_t *bitmap, const bitmap_info_t *binfo) void bitmap_info_init(bitmap_info_t *binfo, size_t nbits) { - size_t i; assert(nbits > 0); assert(nbits <= (ZU(1) << LG_BITMAP_MAXBITS)); - i = nbits >> LG_BITMAP_GROUP_NBITS; - if (nbits % BITMAP_GROUP_NBITS != 0) - i++; - binfo->ngroups = i; + binfo->ngroups = BITMAP_BITS2GROUPS(nbits); binfo->nbits = nbits; } @@ -99,9 +95,10 @@ bitmap_init(bitmap_t *bitmap, const bitmap_info_t *binfo) size_t extra; memset(bitmap, 0xffU, bitmap_size(binfo)); - extra = (binfo->nbits % (binfo->ngroups * BITMAP_GROUP_NBITS)); + extra = (BITMAP_GROUP_NBITS - (binfo->nbits & BITMAP_GROUP_NBITS_MASK)) + & BITMAP_GROUP_NBITS_MASK; if (extra != 0) - bitmap[binfo->ngroups - 1] >>= (BITMAP_GROUP_NBITS - extra); + bitmap[binfo->ngroups - 1] >>= extra; } #endif /* USE_TREE */ |