mirror of
git://sourceware.org/git/newlib-cygwin.git
synced 2025-01-19 12:59:21 +08:00
Cygwin: cygheap: compute bucket instead of looping over it
Start at index 0 and use 32 bytes as minimal allocation size. Reduce NBUCKETS, we don't have such big objects on the cygheap anyway. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
This commit is contained in:
parent
5d3e79ec6b
commit
abb532a87f
@ -487,7 +487,7 @@ struct mini_cygheap
|
||||
cygheap_locale locale;
|
||||
};
|
||||
|
||||
#define NBUCKETS 40
|
||||
#define NBUCKETS 32
|
||||
|
||||
struct threadlist_t
|
||||
{
|
||||
|
@ -264,15 +264,15 @@ init_cygheap::init_installation_root ()
|
||||
|
||||
/* Initialize bucket_val. The value is the max size of a block
|
||||
fitting into the bucket. The values are powers of two and their
|
||||
medians: 24, 32, 48, 64, ...
|
||||
medians: 32, 48, 64, 96, ...
|
||||
The idea is to have better matching bucket sizes (not wasting
|
||||
space) without trading in performance compared to the old powers
|
||||
of 2 method. */
|
||||
static const uint32_t bucket_val[NBUCKETS] = {
|
||||
0, 24, 32, 48, 64, 96, 128, 192, 256, 384, 512, 768, 1024, 1536, 2048,
|
||||
3072, 4096, 6144, 8192, 12288, 16384, 24576, 32768, 49152, 65536, 98304,
|
||||
131072, 196608, 262144, 393216, 524288, 786432, 1048576, 1572864, 2097152,
|
||||
3145728, 4194304, 6291456, 8388608, 12582912
|
||||
32, 48, 64, 96, 128, 192, 256, 384,
|
||||
512, 768, 1024, 1536, 2048, 3072, 4096, 6144,
|
||||
8192, 12288, 16384, 24576, 32768, 49152, 65536, 98304,
|
||||
131072, 196608, 262144, 393216, 524288, 786432, 1048576, 1572864
|
||||
};
|
||||
|
||||
void
|
||||
@ -355,11 +355,15 @@ static void *
|
||||
_cmalloc (unsigned size)
|
||||
{
|
||||
_cmalloc_entry *rvc;
|
||||
unsigned b;
|
||||
unsigned b = 0;
|
||||
|
||||
/* Calculate "bit bucket". */
|
||||
for (b = 1; b < NBUCKETS && bucket_val[b] < size; b++)
|
||||
continue;
|
||||
if (size > bucket_val[0])
|
||||
{
|
||||
const unsigned clz = __builtin_clzl (size - 1);
|
||||
b = (59 - clz) << 1;
|
||||
b -= !((size - 1) & (1 << (62 - clz)));
|
||||
}
|
||||
if (b >= NBUCKETS)
|
||||
return NULL;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user