diff options
author | Marek Olšák <[email protected]> | 2010-07-19 18:08:53 +0200 |
---|---|---|
committer | Marek Olšák <[email protected]> | 2010-07-19 21:05:47 +0200 |
commit | fd03dd203f19301520d16de58552cc2fec5e6115 (patch) | |
tree | b0eb1ab23c3b376f1b73d9b78a86dd6a284fc8c3 | |
parent | 95ca22001a4d72325f963662a635d2b45feaf7b5 (diff) |
util: remove the dummy field in mempool
It should allocate less memory now.
-rw-r--r-- | src/gallium/auxiliary/util/u_mempool.c | 13 | ||||
-rw-r--r-- | src/gallium/auxiliary/util/u_mempool.h | 5 |
2 files changed, 4 insertions, 14 deletions
diff --git a/src/gallium/auxiliary/util/u_mempool.c b/src/gallium/auxiliary/util/u_mempool.c index c4bb2658f29..0ce4b6cf1a7 100644 --- a/src/gallium/auxiliary/util/u_mempool.c +++ b/src/gallium/auxiliary/util/u_mempool.c @@ -30,8 +30,6 @@ #define UTIL_MEMPOOL_MAGIC 0xcafe4321 -struct util_mempool_block_body { char dummy; }; - /* The block is either allocated memory or free space. */ struct util_mempool_block { /* The header. */ @@ -40,9 +38,6 @@ struct util_mempool_block { intptr_t magic; - /* The block begins here. */ - struct util_mempool_block_body body; - /* Memory after the last member is dedicated to the block itself. * The allocated size is always larger than this structure. */ }; @@ -52,7 +47,8 @@ util_mempool_get_block(struct util_mempool *pool, struct util_mempool_page *page, unsigned index) { return (struct util_mempool_block*) - ((uint8_t*)&page->body + (pool->block_size * index)); + ((uint8_t*)page + sizeof(struct util_mempool_page) + + (pool->block_size * index)); } static void util_mempool_add_new_page(struct util_mempool *pool) @@ -92,15 +88,14 @@ static void *util_mempool_malloc_st(struct util_mempool *pool) assert(block->magic == UTIL_MEMPOOL_MAGIC); pool->first_free = block->next_free; - return &block->body; + return (uint8_t*)block + sizeof(struct util_mempool_block); } static void util_mempool_free_st(struct util_mempool *pool, void *ptr) { - struct util_mempool_block dummy; struct util_mempool_block *block = (struct util_mempool_block*) - ((uint8_t*)ptr - ((uint8_t*)&dummy.body - (uint8_t*)&dummy)); + ((uint8_t*)ptr - sizeof(struct util_mempool_block)); assert(block->magic == UTIL_MEMPOOL_MAGIC); block->next_free = pool->first_free; diff --git a/src/gallium/auxiliary/util/u_mempool.h b/src/gallium/auxiliary/util/u_mempool.h index c96f9b696b5..a5b5d6a9b7c 100644 --- a/src/gallium/auxiliary/util/u_mempool.h +++ b/src/gallium/auxiliary/util/u_mempool.h @@ -43,16 +43,11 @@ enum util_mempool_threading { UTIL_MEMPOOL_MULTITHREADED = TRUE }; -struct util_mempool_page_body { char dummy; }; - /* The page is an array of blocks (allocations). */ struct util_mempool_page { /* The header (linked-list pointers). */ struct util_mempool_page *prev, *next; - /* The page begins here. */ - struct util_mempool_page_body body; - /* Memory after the last member is dedicated to the page itself. * The allocated size is always larger than this structure. */ }; |