summaryrefslogtreecommitdiff
path: root/src/backend/utils/mmgr/aset.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/utils/mmgr/aset.c')
-rw-r--r--src/backend/utils/mmgr/aset.c46
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 */