summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJason Evans <jasone@canonware.com>2016-04-06 17:38:47 (GMT)
committerJason Evans <jasone@canonware.com>2016-04-06 17:38:47 (GMT)
commit2ee2f1ec57d9094643db60210c28b989f2e7da83 (patch)
tree6bbc3e6544a048211a93384fd997e9d5d07bad37
parent4a8abbb400afe695f145a487380c04a946500bc6 (diff)
downloadjemalloc-2ee2f1ec57d9094643db60210c28b989f2e7da83.zip
jemalloc-2ee2f1ec57d9094643db60210c28b989f2e7da83.tar.gz
jemalloc-2ee2f1ec57d9094643db60210c28b989f2e7da83.tar.bz2
Reduce differences between alternative bitmap implementations.
-rw-r--r--include/jemalloc/internal/bitmap.h2
-rw-r--r--src/bitmap.c11
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 */