Lines Matching refs:FreeBlock
212 class FreeBlock : BlockMutexes { class
217 FreeBlock *prev, // in 2-linked list related to bin
226 FreeBlock *rightNeig(size_t sz) const { in rightNeig()
228 return (FreeBlock*)((uintptr_t)this+sz); in rightNeig()
230 FreeBlock *leftNeig(size_t sz) const { in leftNeig()
232 return (FreeBlock*)((uintptr_t)this - sz); in leftNeig()
267 static void markBlocks(FreeBlock *fBlock, int num, size_t size) { in markBlocks()
269 fBlock = (FreeBlock*)((uintptr_t)fBlock + size); in markBlocks()
278 struct LastFreeBlock : public FreeBlock {
282 const size_t FreeBlock::minBlockSize = sizeof(FreeBlock);
340 void CoalRequestQ::putBlock(FreeBlock *fBlock) in putBlock()
342 MALLOC_ASSERT(fBlock->sizeTmp >= FreeBlock::minBlockSize, ASSERT_TEXT); in putBlock()
347 FreeBlock *myBlToFree = blocksToFree.load(std::memory_order_acquire); in putBlock()
356 FreeBlock *CoalRequestQ::getAll() in getAll()
359 FreeBlock *myBlToFree = blocksToFree.load(std::memory_order_acquire); in getAll()
386 FreeBlock *Backend::IndexedBins::getFromBin(int binIdx, BackendSync *sync, size_t size, in getFromBin()
391 FreeBlock *fBlock = nullptr; in getFromBin()
401 for (FreeBlock *curr = b->head.load(std::memory_order_relaxed); curr; curr = curr->next) { in getFromBin()
413 if (szBlock >= size && (splitSz >= FreeBlock::minBlockSize || !splitSz)) in getFromBin()
426 … && (newB == curr || ((uintptr_t)newB - (uintptr_t)curr) >= FreeBlock::minBlockSize) in getFromBin()
427 … && (rightNew == rightCurr || (rightCurr - rightNew) >= FreeBlock::minBlockSize)) in getFromBin()
452 FreeBlock *fBlockList = nullptr; in tryReleaseRegions()
459 for (FreeBlock *curr = b->head.load(std::memory_order_relaxed); curr; ) { in tryReleaseRegions()
464 FreeBlock *next = curr->next; in tryReleaseRegions()
477 void Backend::Bin::removeBlock(FreeBlock *fBlock) in removeBlock()
491 void Backend::IndexedBins::addBlock(int binIdx, FreeBlock *fBlock, size_t /* blockSz */, bool addTo… in addBlock()
517 bool Backend::IndexedBins::tryAddBlock(int binIdx, FreeBlock *fBlock, bool addToTail) in tryAddBlock()
560 void Backend::IndexedBins::lockRemoveBlock(int binIdx, FreeBlock *fBlock) in lockRemoveBlock()
573 FreeBlock *Backend::splitBlock(FreeBlock *fBlock, int num, size_t size, bool blockIsAligned, bool n… in splitBlock()
584 FreeBlock *newBlock = alignUp(fBlock, slabSize); in splitBlock()
585 FreeBlock *rightPart = (FreeBlock*)((uintptr_t)newBlock + totalSize); in splitBlock()
603 FreeBlock *splitBlock = nullptr; in splitBlock()
608 fBlock = (FreeBlock*)((uintptr_t)splitBlock + splitSize); in splitBlock()
612 splitBlock = (FreeBlock*)((uintptr_t)fBlock + totalSize); in splitBlock()
621 FreeBlock::markBlocks(fBlock, num, size); in splitBlock()
637 FreeBlock *Backend::releaseMemInCaches(intptr_t startModifiedCnt, in releaseMemInCaches()
642 return (FreeBlock*)VALID_BLOCK_IN_BIN; in releaseMemInCaches()
645 return (FreeBlock*)VALID_BLOCK_IN_BIN; in releaseMemInCaches()
650 return (FreeBlock*)VALID_BLOCK_IN_BIN; in releaseMemInCaches()
655 FreeBlock *Backend::askMemFromOS(size_t blockSize, intptr_t startModifiedCnt, in askMemFromOS()
659 FreeBlock *block; in askMemFromOS()
692 return (FreeBlock*)VALID_BLOCK_IN_BIN; in askMemFromOS()
696 return (FreeBlock*)VALID_BLOCK_IN_BIN; in askMemFromOS()
718 if (!block || block == (FreeBlock*)VALID_BLOCK_IN_BIN) in askMemFromOS()
762 FreeBlock *Backend::IndexedBins::findBlock(int nativeBin, BackendSync *sync, size_t size, in findBlock()
766 …if (FreeBlock *block = getFromBin(i, sync, size, needAlignedBlock, alignedBin, /*wait=*/false, num… in findBlock()
789 FreeBlock *Backend::genericGetBlock(int num, size_t size, bool needAlignedBlock) in genericGetBlock()
791 FreeBlock *block = nullptr; in genericGetBlock()
842 if (block != (FreeBlock*)VALID_BLOCK_IN_BIN) { in genericGetBlock()
881 genericPutBlock((FreeBlock *)block, slabSize, /*slabAligned=*/true); in putSlabBlock()
905 void Backend::removeBlockFromBin(FreeBlock *fBlock) in removeBlockFromBin()
915 void Backend::genericPutBlock(FreeBlock *fBlock, size_t blockSz, bool slabAligned) in genericPutBlock()
947 genericPutBlock((FreeBlock *)lmb, lmb->unalignedSize, false); in putLargeBlock()
968 FreeBlock *oldFBlock = (FreeBlock *)lmbOld; in remap()
969 FreeBlock *right = oldFBlock->rightNeig(oldUnalignedSize); in remap()
1004 FreeBlock *fBlock = (FreeBlock *)alignUp((uintptr_t)region + sizeof(MemRegion), in remap()
1042 FreeBlock *Backend::doCoalesc(FreeBlock *fBlock, MemRegion **mRegion) in doCoalesc()
1044 FreeBlock *resBlock = fBlock; in doCoalesc()
1058 FreeBlock *left = fBlock->leftNeig(leftSz); in doCoalesc()
1074 FreeBlock *right = fBlock->rightNeig(fBlock->sizeTmp); in doCoalesc()
1105 FreeBlock *nextRight = right->rightNeig(rightSz); in doCoalesc()
1128 bool Backend::coalescAndPutList(FreeBlock *list, bool forceCoalescQDrop, bool reportBlocksProcessed) in coalescAndPutList()
1132 for (FreeBlock *helper; list; in coalescAndPutList()
1140 FreeBlock *toRet = doCoalesc(list, &memRegion); in coalescAndPutList()
1204 void Backend::coalescAndPut(FreeBlock *fBlock, size_t blockSz, bool slabAligned) in coalescAndPut()
1215 FreeBlock *currCoalescList = coalescQ.getAll(); in scanCoalescQ()
1227 FreeBlock *Backend::findBlockInRegion(MemRegion *region, size_t exactBlockSize) in findBlockInRegion()
1229 FreeBlock *fBlock; in findBlockInRegion()
1239 fBlock = (FreeBlock *)alignUp((uintptr_t)region + sizeof(MemRegion), sizeof(uintptr_t)); in findBlockInRegion()
1242 fBlock = (FreeBlock *)alignUp((uintptr_t)region + sizeof(MemRegion), largeObjectAlignment); in findBlockInRegion()
1261 void Backend::startUseBlock(MemRegion *region, FreeBlock *fBlock, bool addToBin) in startUseBlock()
1293 MALLOC_ASSERT(fBlock->sizeTmp >= FreeBlock::minBlockSize, "Locking must be successful"); in startUseBlock()
1331 FreeBlock *Backend::addNewRegion(size_t size, MemRegionType memRegType, bool addToBin) in addNewRegion()
1334 MALLOC_ASSERT(FreeBlock::minBlockSize > GuardedSize::MAX_SPEC_VAL, in addNewRegion()
1340 + FreeBlock::minBlockSize + sizeof(LastFreeBlock); in addNewRegion()
1356 FreeBlock *fBlock = findBlockInRegion(region, size); in addNewRegion()
1365 return addToBin? (FreeBlock*)VALID_BLOCK_IN_BIN : fBlock; in addNewRegion()
1387 FreeBlock *fBlock = findBlockInRegion(curr, curr->blockSz); in reset()
1435 for (FreeBlock *fb = freeBins[i].head.load(std::memory_order_relaxed); fb; fb=fb->next) { in verify()
1438 FreeBlock *right = (FreeBlock*)((uintptr_t)fb + mySz); in verify()
1466 for (FreeBlock *fb = head; fb; fb = fb->next) in countFreeBlocks()
1476 for (FreeBlock *fb = head; fb; fb = fb->next) { in reportFreeBlocks()