diff options
author | jasone <jasone@FreeBSD.org> | 2006-07-27 04:00:12 +0000 |
---|---|---|
committer | jasone <jasone@FreeBSD.org> | 2006-07-27 04:00:12 +0000 |
commit | 2f036ab08182af0365d82be52744c6d5882f2ba4 (patch) | |
tree | ab42290edd4dda27926b3ce8bd2ea88cf97501b9 /lib/libc | |
parent | a7a17ae9e3683a44d88e80d0a4cba3b493409a02 (diff) | |
download | FreeBSD-src-2f036ab08182af0365d82be52744c6d5882f2ba4.zip FreeBSD-src-2f036ab08182af0365d82be52744c6d5882f2ba4.tar.gz |
Fix cpp logic in arena_malloc() to adjust size when assertions are enabled,
even if stats gathering is disabled. [1]
Remove 'size' parameter from several functions that do not use it.
Reported by: [1] ache
Diffstat (limited to 'lib/libc')
-rw-r--r-- | lib/libc/stdlib/malloc.c | 42 |
1 files changed, 19 insertions, 23 deletions
diff --git a/lib/libc/stdlib/malloc.c b/lib/libc/stdlib/malloc.c index 7154ee4..c1ce04e 100644 --- a/lib/libc/stdlib/malloc.c +++ b/lib/libc/stdlib/malloc.c @@ -835,15 +835,13 @@ static void arena_run_split(arena_t *arena, arena_run_t *run, bool large, static arena_chunk_t *arena_chunk_alloc(arena_t *arena); static void arena_chunk_dealloc(arena_chunk_t *chunk); static void arena_bin_run_promote(arena_t *arena, arena_bin_t *bin, - arena_run_t *run, size_t size); + arena_run_t *run); static void arena_bin_run_demote(arena_t *arena, arena_bin_t *bin, - arena_run_t *run, size_t size); + arena_run_t *run); static arena_run_t *arena_run_alloc(arena_t *arena, bool large, size_t size); static void arena_run_dalloc(arena_t *arena, arena_run_t *run, size_t size); -static arena_run_t *arena_bin_nonfull_run_get(arena_t *arena, arena_bin_t *bin, - size_t size); -static void *arena_bin_malloc_hard(arena_t *arena, arena_bin_t *bin, - size_t size); +static arena_run_t *arena_bin_nonfull_run_get(arena_t *arena, arena_bin_t *bin); +static void *arena_bin_malloc_hard(arena_t *arena, arena_bin_t *bin); static void *arena_malloc(arena_t *arena, size_t size); static size_t arena_salloc(const void *ptr); static void *arena_ralloc(void *ptr, size_t size, size_t oldsize); @@ -1778,8 +1776,7 @@ arena_chunk_dealloc(arena_chunk_t *chunk) } static void -arena_bin_run_promote(arena_t *arena, arena_bin_t *bin, arena_run_t *run, - size_t size) +arena_bin_run_promote(arena_t *arena, arena_bin_t *bin, arena_run_t *run) { assert(bin == run->bin); @@ -1850,8 +1847,7 @@ arena_bin_run_promote(arena_t *arena, arena_bin_t *bin, arena_run_t *run, } static void -arena_bin_run_demote(arena_t *arena, arena_bin_t *bin, arena_run_t *run, - size_t size) +arena_bin_run_demote(arena_t *arena, arena_bin_t *bin, arena_run_t *run) { assert(bin == run->bin); @@ -2057,7 +2053,7 @@ arena_run_dalloc(arena_t *arena, arena_run_t *run, size_t size) } static arena_run_t * -arena_bin_nonfull_run_get(arena_t *arena, arena_bin_t *bin, size_t size) +arena_bin_nonfull_run_get(arena_t *arena, arena_bin_t *bin) { arena_run_t *run; unsigned i, remainder; @@ -2118,8 +2114,7 @@ arena_bin_nonfull_run_get(arena_t *arena, arena_bin_t *bin, size_t size) /* bin->runcur must have space available before this function is called. */ static inline void * -arena_bin_malloc_easy(arena_t *arena, arena_bin_t *bin, arena_run_t *run, - size_t size) +arena_bin_malloc_easy(arena_t *arena, arena_bin_t *bin, arena_run_t *run) { void *ret; @@ -2131,7 +2126,7 @@ arena_bin_malloc_easy(arena_t *arena, arena_bin_t *bin, arena_run_t *run, run->nfree--; if (run->nfree < run->free_min) { /* Promote run to higher fullness quartile. */ - arena_bin_run_promote(arena, bin, run, size); + arena_bin_run_promote(arena, bin, run); } return (ret); @@ -2139,18 +2134,18 @@ arena_bin_malloc_easy(arena_t *arena, arena_bin_t *bin, arena_run_t *run, /* Re-fill bin->runcur, then call arena_bin_malloc_easy(). */ static void * -arena_bin_malloc_hard(arena_t *arena, arena_bin_t *bin, size_t size) +arena_bin_malloc_hard(arena_t *arena, arena_bin_t *bin) { assert(bin->runcur == NULL || bin->runcur->quartile == RUN_Q100); - bin->runcur = arena_bin_nonfull_run_get(arena, bin, size); + bin->runcur = arena_bin_nonfull_run_get(arena, bin); if (bin->runcur == NULL) return (NULL); assert(bin->runcur->magic == ARENA_RUN_MAGIC); assert(bin->runcur->nfree > 0); - return (arena_bin_malloc_easy(arena, bin, bin->runcur, size)); + return (arena_bin_malloc_easy(arena, bin, bin->runcur)); } static void * @@ -2173,10 +2168,11 @@ arena_malloc(arena_t *arena, size_t size) /* Tiny. */ size = pow2_ceil(size); bin = &arena->bins[ffs(size >> (tiny_min_2pow + 1))]; -#ifdef MALLOC_STATS +#if (!defined(NDEBUG) || defined(MALLOC_STATS)) /* - * Bin calculation is always correct, but we may need to - * fix size for the purposes of stats accuracy. + * Bin calculation is always correct, but we may need + * to fix size for the purposes of assertions and/or + * stats accuracy. */ if (size < (1 << tiny_min_2pow)) size = (1 << tiny_min_2pow); @@ -2196,9 +2192,9 @@ arena_malloc(arena_t *arena, size_t size) malloc_mutex_lock(&arena->mtx); if ((run = bin->runcur) != NULL) - ret = arena_bin_malloc_easy(arena, bin, run, size); + ret = arena_bin_malloc_easy(arena, bin, run); else - ret = arena_bin_malloc_hard(arena, bin, size); + ret = arena_bin_malloc_hard(arena, bin); #ifdef MALLOC_STATS bin->stats.nrequests++; @@ -2343,7 +2339,7 @@ arena_dalloc(arena_t *arena, arena_chunk_t *chunk, void *ptr) run->nfree++; if (run->nfree > run->free_max) { /* Demote run to lower fullness quartile. */ - arena_bin_run_demote(arena, bin, run, size); + arena_bin_run_demote(arena, bin, run); } } else { /* Medium allocation. */ |