Mercurial > dovecot > original-hg > dovecot-1.2
changeset 857:3d437b1e5257 HEAD
Removed pool->realloc_min() which nothing used. A few small fixes to
alloc-only pool.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Fri, 27 Dec 2002 16:01:42 +0200 |
parents | e49f7397af98 |
children | 8f4bd02461e0 |
files | src/lib/data-stack.c src/lib/mempool-alloconly.c src/lib/mempool-datastack.c src/lib/mempool-system.c src/lib/mempool.h |
diffstat | 5 files changed, 22 insertions(+), 71 deletions(-) [+] |
line wrap: on
line diff
--- a/src/lib/data-stack.c Fri Dec 27 15:05:53 2002 +0200 +++ b/src/lib/data-stack.c Fri Dec 27 16:01:42 2002 +0200 @@ -36,11 +36,6 @@ #ifndef DISABLE_DATA_STACK -/* Max. number of bytes to even try to allocate. This is done just to avoid - allocating less memory than was actually requested because of integer - overflows. */ -#define MAX_ALLOC_SIZE SSIZE_T_MAX - /* Initial stack size - this should be kept in a size that doesn't exceed in a normal use to avoid extra malloc()ing. */ #ifdef DEBUG
--- a/src/lib/mempool-alloconly.c Fri Dec 27 15:05:53 2002 +0200 +++ b/src/lib/mempool-alloconly.c Fri Dec 27 16:01:42 2002 +0200 @@ -40,7 +40,6 @@ int refcount; PoolBlock *block; - size_t last_alloc_size; char name[MEM_ALIGN_SIZE]; /* variable size */ } AlloconlyPool; @@ -51,6 +50,7 @@ size_t size; size_t left; + size_t last_alloc_size; /* unsigned char data[]; */ }; @@ -73,7 +73,6 @@ static void *pool_alloconly_malloc(Pool pool, size_t size); static void pool_alloconly_free(Pool pool, void *mem); static void *pool_alloconly_realloc(Pool pool, void *mem, size_t size); -static void *pool_alloconly_realloc_min(Pool pool, void *mem, size_t size); static void pool_alloconly_clear(Pool pool); static void block_alloc(AlloconlyPool *pool, size_t size); @@ -86,7 +85,6 @@ pool_alloconly_free, pool_alloconly_realloc, - pool_alloconly_realloc_min, pool_alloconly_clear }; @@ -139,12 +137,10 @@ PoolBlock *block; /* each block is at least twice the size of the previous one */ - if (apool->block != NULL) + if (apool->block != NULL && size <= apool->block->size) size += apool->block->size; - if (size <= SIZEOF_POOLBLOCK) - size += SIZEOF_POOLBLOCK; - size = nearest_power(size); + size = nearest_power(size + SIZEOF_POOLBLOCK); #ifdef DEBUG if (apool->block != NULL) { @@ -183,7 +179,7 @@ alloc->size.size = size; apool->block->left -= size + SIZEOF_POOLALLOC; - apool->last_alloc_size = size; + apool->block->last_alloc_size = size; return alloc->data; } @@ -193,24 +189,18 @@ /* ignore */ } -static void *pool_alloconly_realloc(Pool pool, void *mem, size_t size) -{ - /* there's no point in shrinking the memory usage, - so just do the same as realloc_min() */ - return pool_alloconly_realloc_min(pool, mem, size); -} - static int pool_try_grow(AlloconlyPool *apool, void *mem, size_t size) { /* see if we want to grow the memory we allocated last */ - if (POOL_BLOCK_DATA(apool->block) + (apool->block->size - - apool->block->left - - apool->last_alloc_size) == mem) { + if (POOL_BLOCK_DATA(apool->block) + + (apool->block->size - apool->block->left - + apool->block->last_alloc_size) == mem) { /* yeah, see if we can grow */ - if (apool->block->left >= size-apool->last_alloc_size) { + if (apool->block->left >= size-apool->block->last_alloc_size) { /* just shrink the available size */ - apool->block->left -= size - apool->last_alloc_size; - apool->last_alloc_size = size; + apool->block->left -= + size - apool->block->last_alloc_size; + apool->block->last_alloc_size = size; return TRUE; } } @@ -218,7 +208,7 @@ return FALSE; } -static void *pool_alloconly_realloc_min(Pool pool, void *mem, size_t size) +static void *pool_alloconly_realloc(Pool pool, void *mem, size_t size) { AlloconlyPool *apool = (AlloconlyPool *) pool; PoolAlloc *alloc; @@ -228,16 +218,14 @@ if (size == 0 || size > SSIZE_T_MAX) i_panic("Trying to allocate %"PRIuSIZE_T" bytes", size); - if (mem == NULL) { - alloc = NULL; - old_size = 0; - } else { - /* get old size */ - alloc = (PoolAlloc *) ((char *) mem - SIZEOF_POOLALLOC); - old_size = alloc->size.size; - } + if (mem == NULL) + return pool_alloconly_malloc(pool, size); - if (old_size >= size) + /* get old size */ + alloc = (PoolAlloc *) ((char *) mem - SIZEOF_POOLALLOC); + old_size = alloc->size.size; + + if (size <= old_size) return mem; size = MEM_ALIGN(size); @@ -275,6 +263,5 @@ memset(POOL_BLOCK_DATA(apool->block), 0, apool->block->size - apool->block->left); apool->block->left = apool->block->size; - - apool->last_alloc_size = 0; + apool->block->last_alloc_size = 0; }
--- a/src/lib/mempool-datastack.c Fri Dec 27 15:05:53 2002 +0200 +++ b/src/lib/mempool-datastack.c Fri Dec 27 16:01:42 2002 +0200 @@ -41,7 +41,6 @@ static void *pool_data_stack_malloc(Pool pool, size_t size); static void pool_data_stack_free(Pool pool, void *mem); static void *pool_data_stack_realloc(Pool pool, void *mem, size_t size); -static void *pool_data_stack_realloc_min(Pool pool, void *mem, size_t size); static void pool_data_stack_clear(Pool pool); static struct Pool static_data_stack_pool = { @@ -52,7 +51,6 @@ pool_data_stack_free, pool_data_stack_realloc, - pool_data_stack_realloc_min, pool_data_stack_clear }; @@ -85,13 +83,8 @@ { } -static void *pool_data_stack_realloc(Pool pool, void *mem, size_t size) -{ - return pool_data_stack_realloc_min(pool, mem, size); -} - -static void *pool_data_stack_realloc_min(Pool pool __attr_unused__, - void *mem, size_t size) +static void *pool_data_stack_realloc(Pool pool __attr_unused__, + void *mem, size_t size) { /* @UNSAFE */ PoolAlloc *alloc, *new_alloc;
--- a/src/lib/mempool-system.c Fri Dec 27 15:05:53 2002 +0200 +++ b/src/lib/mempool-system.c Fri Dec 27 16:01:42 2002 +0200 @@ -43,7 +43,6 @@ static void *pool_system_malloc(Pool pool, size_t size); static void pool_system_free(Pool pool, void *mem); static void *pool_system_realloc(Pool pool, void *mem, size_t size); -static void *pool_system_realloc_min(Pool pool, void *mem, size_t size); static void pool_system_clear(Pool pool); static struct Pool static_system_pool = { @@ -54,7 +53,6 @@ pool_system_free, pool_system_realloc, - pool_system_realloc_min, pool_system_clear }; @@ -124,25 +122,6 @@ return rmem; } -static void *pool_system_realloc_min(Pool pool, void *mem, size_t size) -{ - PoolAlloc *alloc; - size_t old_size; - - if (mem == NULL) - old_size = 0; - else { - /* get old size */ - alloc = (PoolAlloc *) ((char *) mem - sizeof(PoolAlloc)); - old_size = alloc->size.size; - } - - if (old_size >= size) - return mem; - else - return pool_system_realloc(pool, mem, size); -} - static void pool_system_clear(Pool pool __attr_unused__) { i_panic("pool_system_clear() must not be called");
--- a/src/lib/mempool.h Fri Dec 27 15:05:53 2002 +0200 +++ b/src/lib/mempool.h Fri Dec 27 16:01:42 2002 +0200 @@ -20,8 +20,6 @@ /* reallocate the `mem' to be exactly `size' */ void *(*realloc)(Pool pool, void *mem, size_t size); - /* reallocate the `mem' to be at least `size' if it wasn't previously */ - void *(*realloc_min)(Pool pool, void *mem, size_t size); /* Frees all the memory in pool. NOTE: system_pool doesn't support this and crashes if it's used */ @@ -44,7 +42,6 @@ #define p_malloc(pool, size) (pool)->malloc(pool, size) #define p_realloc(pool, mem, size) (pool)->realloc(pool, mem, size) -#define p_realloc_min(pool, mem, size) (pool)->realloc_min(pool, mem, size) #define p_free(pool, mem) (pool)->free(pool, mem) #define p_clear(pool) (pool)->clear(pool)