diff options
Diffstat (limited to 'src/backend/utils/mmgr/aset.c')
-rw-r--r-- | src/backend/utils/mmgr/aset.c | 46 |
1 files changed, 13 insertions, 33 deletions
diff --git a/src/backend/utils/mmgr/aset.c b/src/backend/utils/mmgr/aset.c index ccf78ffe0cb..c0623f106d2 100644 --- a/src/backend/utils/mmgr/aset.c +++ b/src/backend/utils/mmgr/aset.c @@ -132,7 +132,6 @@ typedef struct AllocSetContext Size maxBlockSize; /* maximum block size */ Size nextBlockSize; /* next block size to allocate */ Size allocChunkLimit; /* effective chunk size limit */ - Size memAllocated; /* track memory allocated for this context */ AllocBlock keeper; /* keep this block over resets */ /* freelist this context could be put in, or -1 if not a candidate: */ int freeListIndex; /* index in context_freelists[], or -1 */ @@ -273,7 +272,6 @@ static void *AllocSetRealloc(MemoryContext context, void *pointer, Size size); static void AllocSetReset(MemoryContext context); static void AllocSetDelete(MemoryContext context); static Size AllocSetGetChunkSpace(MemoryContext context, void *pointer); -static Size AllocSetMemAllocated(MemoryContext context); static bool AllocSetIsEmpty(MemoryContext context); static void AllocSetStats(MemoryContext context, MemoryStatsPrintFunc printfunc, void *passthru, @@ -293,7 +291,6 @@ static const MemoryContextMethods AllocSetMethods = { AllocSetReset, AllocSetDelete, AllocSetGetChunkSpace, - AllocSetMemAllocated, AllocSetIsEmpty, AllocSetStats #ifdef MEMORY_CONTEXT_CHECKING @@ -467,7 +464,8 @@ AllocSetContextCreateInternal(MemoryContext parent, parent, name); - set->memAllocated = set->keeper->endptr - ((char *) set); + ((MemoryContext) set)->mem_allocated = + set->keeper->endptr - ((char *) set); return (MemoryContext) set; } @@ -557,7 +555,7 @@ AllocSetContextCreateInternal(MemoryContext parent, parent, name); - set->memAllocated = firstBlockSize; + ((MemoryContext) set)->mem_allocated = firstBlockSize; return (MemoryContext) set; } @@ -619,7 +617,7 @@ AllocSetReset(MemoryContext context) else { /* Normal case, release the block */ - set->memAllocated -= block->endptr - ((char*) block); + context->mem_allocated -= block->endptr - ((char*) block); #ifdef CLOBBER_FREED_MEMORY wipe_mem(block, block->freeptr - ((char *) block)); @@ -629,7 +627,7 @@ AllocSetReset(MemoryContext context) block = next; } - Assert(set->memAllocated == keepersize); + Assert(context->mem_allocated == keepersize); /* Reset block size allocation sequence, too */ set->nextBlockSize = set->initBlockSize; @@ -705,7 +703,7 @@ AllocSetDelete(MemoryContext context) AllocBlock next = block->next; if (block != set->keeper) - set->memAllocated -= block->endptr - ((char *) block); + context->mem_allocated -= block->endptr - ((char *) block); #ifdef CLOBBER_FREED_MEMORY wipe_mem(block, block->freeptr - ((char *) block)); @@ -717,7 +715,7 @@ AllocSetDelete(MemoryContext context) block = next; } - Assert(set->memAllocated == keepersize); + Assert(context->mem_allocated == keepersize); /* Finally, free the context header, including the keeper block */ free(set); @@ -760,7 +758,7 @@ AllocSetAlloc(MemoryContext context, Size size) if (block == NULL) return NULL; - set->memAllocated += blksize; + context->mem_allocated += blksize; block->aset = set; block->freeptr = block->endptr = ((char *) block) + blksize; @@ -957,7 +955,7 @@ AllocSetAlloc(MemoryContext context, Size size) if (block == NULL) return NULL; - set->memAllocated += blksize; + context->mem_allocated += blksize; block->aset = set; block->freeptr = ((char *) block) + ALLOC_BLOCKHDRSZ; @@ -1060,7 +1058,7 @@ AllocSetFree(MemoryContext context, void *pointer) if (block->next) block->next->prev = block->prev; - set->memAllocated -= block->endptr - ((char*) block); + context->mem_allocated -= block->endptr - ((char*) block); #ifdef CLOBBER_FREED_MEMORY wipe_mem(block, block->freeptr - ((char *) block)); @@ -1163,8 +1161,8 @@ AllocSetRealloc(MemoryContext context, void *pointer, Size size) } /* updated separately, not to underflow when (oldblksize > blksize) */ - set->memAllocated -= oldblksize; - set->memAllocated += blksize; + context->mem_allocated -= oldblksize; + context->mem_allocated += blksize; block->freeptr = block->endptr = ((char *) block) + blksize; @@ -1340,24 +1338,6 @@ AllocSetGetChunkSpace(MemoryContext context, void *pointer) } /* - * All memory currently allocated for this context (including fragmentation - * and freed chunks). - * - * Allocation sizes double (up to maxBlockSize), so the current block may - * represent half of the total space allocated to the context. Subtract away - * the free space at the tail of the current block, which may never have been - * touched. - */ -static Size -AllocSetMemAllocated(MemoryContext context) -{ - AllocSet set = (AllocSet) context; - AllocBlock currentBlock = set->blocks; - Size tailSpace = currentBlock->endptr - currentBlock->freeptr; - return set->memAllocated - tailSpace; -} - -/* * AllocSetIsEmpty * Is an allocset empty of any allocated space? */ @@ -1558,7 +1538,7 @@ AllocSetCheck(MemoryContext context) name, block); } - Assert(total_allocated == set->memAllocated); + Assert(total_allocated == context->mem_allocated); } #endif /* MEMORY_CONTEXT_CHECKING */ |