freeBlock
ClientMemoryAllocator::Free(block* freeBlock)
if (freeBlock == NULL)
if (freeBlock->size != freeBlock->chunk->size) {
if (block->chunk != freeBlock->chunk)
if (block->base + block->size == freeBlock->base)
if (block->base == freeBlock->base + freeBlock->size)
before->size += after->size + freeBlock->size;
free(freeBlock);
freeBlock = before;
before->size += freeBlock->size;
free(freeBlock);
freeBlock = before;
after->base -= freeBlock->size;
after->size += freeBlock->size;
free(freeBlock);
freeBlock = after;
fFreeBlocks.Add(freeBlock);
if (freeBlock->size == freeBlock->chunk->size) {
struct chunk* chunk = freeBlock->chunk;
fFreeBlocks.Remove(freeBlock);
free(freeBlock);
int freeBlock(block * &b, superblock * &sb, int sizeclass,
int sbUnmapped = owner->freeBlock(b, sb, sizeclass, this);