Lines Matching refs:block
288 void returnEmptyBlock(Block *block, bool poolTheBlock);
466 inline void setActiveBlock(Block *block);
469 void moveBlockToFront(Block *block);
471 void processEmptyBlock(Block *block, bool poolTheBlock);
472 void addPublicFreeListBlock(Block* block);
474 void outofTLSBin(Block* block);
476 void pushTLSBin(Block* block);
550 Block* block; member in rml::internal::FreeBlockPool::ResOfGet
552 ResOfGet(Block *b, bool lastMiss) : block(b), lastAccMiss(lastMiss) {} in ResOfGet()
558 void returnBlock(Block *block);
639 Block *block = bin[i].getActiveBlock(); in cleanupBlockBins() local
640 if (block && block->empty()) { in cleanupBlockBins()
641 bin[i].outofTLSBin(block); in cleanupBlockBins()
642 memPool->returnEmptyBlock(block, /*poolTheBlock=*/false); in cleanupBlockBins()
938 void LifoList::push(Block *block) in push() argument
941 block->next = top.load(std::memory_order_relaxed); in push()
942 top.store(block, std::memory_order_relaxed); in push()
947 Block* block = nullptr; in pop() local
950 block = top.load(std::memory_order_relaxed); in pop()
951 if (block) { in pop()
952 top.store(block->next, std::memory_order_relaxed); in pop()
955 return block; in pop()
960 Block *block = nullptr; in grab() local
963 block = top.load(std::memory_order_relaxed); in grab()
966 return block; in grab()
1013 Block *result = resOfGet.block; in getEmptyBlock()
1060 void MemoryPool::returnEmptyBlock(Block *block, bool poolTheBlock) in returnEmptyBlock() argument
1062 block->reset(); in returnEmptyBlock()
1064 getTLS(/*create=*/false)->freeSlabBlocks.returnBlock(block); in returnEmptyBlock()
1068 removeBackRef(*(block->getBackRefIdx())); in returnEmptyBlock()
1069 extMemPool.backend.putSlabBlock(block); in returnEmptyBlock()
1208 void Bin::pushTLSBin(Block* block) in pushTLSBin() argument
1212 unsigned int size = block->objectSize; in pushTLSBin()
1214 MALLOC_ASSERT( block->isOwnedByCurrentThread(), ASSERT_TEXT ); in pushTLSBin()
1215 MALLOC_ASSERT( block->objectSize != 0, ASSERT_TEXT ); in pushTLSBin()
1216 MALLOC_ASSERT( block->next == nullptr, ASSERT_TEXT ); in pushTLSBin()
1217 MALLOC_ASSERT( block->previous == nullptr, ASSERT_TEXT ); in pushTLSBin()
1222 block->next = activeBlk; in pushTLSBin()
1224 block->previous = activeBlk->previous; in pushTLSBin()
1225 activeBlk->previous = block; in pushTLSBin()
1226 if( block->previous ) in pushTLSBin()
1227 block->previous->next = block; in pushTLSBin()
1229 activeBlk = block; in pushTLSBin()
1238 void Bin::outofTLSBin(Block* block) in outofTLSBin() argument
1240 unsigned int size = block->objectSize; in outofTLSBin()
1242 MALLOC_ASSERT( block->isOwnedByCurrentThread(), ASSERT_TEXT ); in outofTLSBin()
1243 MALLOC_ASSERT( block->objectSize != 0, ASSERT_TEXT ); in outofTLSBin()
1248 if (block == activeBlk) { in outofTLSBin()
1249 activeBlk = block->previous? block->previous : block->next; in outofTLSBin()
1252 if (block->previous) { in outofTLSBin()
1253 MALLOC_ASSERT( block->previous->next == block, ASSERT_TEXT ); in outofTLSBin()
1254 block->previous->next = block->next; in outofTLSBin()
1256 if (block->next) { in outofTLSBin()
1257 MALLOC_ASSERT( block->next->previous == block, ASSERT_TEXT ); in outofTLSBin()
1258 block->next->previous = block->previous; in outofTLSBin()
1260 block->next = nullptr; in outofTLSBin()
1261 block->previous = nullptr; in outofTLSBin()
1268 Block* block; in getPrivatizedFreeListBlock() local
1278 block = mailbox.load(std::memory_order_relaxed); in getPrivatizedFreeListBlock()
1279 if( block ) { in getPrivatizedFreeListBlock()
1280 MALLOC_ASSERT( block->isOwnedByCurrentThread(), ASSERT_TEXT ); in getPrivatizedFreeListBlock()
1281 …MALLOC_ASSERT( !isNotForUse(block->nextPrivatizable.load(std::memory_order_relaxed)), ASSERT_TEXT … in getPrivatizedFreeListBlock()
1282 … mailbox.store(block->nextPrivatizable.load(std::memory_order_relaxed), std::memory_order_relaxed); in getPrivatizedFreeListBlock()
1283 block->nextPrivatizable.store((Block*)this, std::memory_order_relaxed); in getPrivatizedFreeListBlock()
1286 if( block ) { in getPrivatizedFreeListBlock()
1287 … MALLOC_ASSERT( isSolidPtr(block->publicFreeList.load(std::memory_order_relaxed)), ASSERT_TEXT ); in getPrivatizedFreeListBlock()
1288 block->privatizePublicFreeList(); in getPrivatizedFreeListBlock()
1289 block->adjustPositionInBin(this); in getPrivatizedFreeListBlock()
1291 return block; in getPrivatizedFreeListBlock()
1294 void Bin::addPublicFreeListBlock(Block* block) in addPublicFreeListBlock() argument
1297 … block->nextPrivatizable.store(mailbox.load(std::memory_order_relaxed), std::memory_order_relaxed); in addPublicFreeListBlock()
1298 mailbox.store(block, std::memory_order_relaxed); in addPublicFreeListBlock()
1305 Block* block; in cleanPublicFreeLists() local
1311 block = mailbox.load(std::memory_order_relaxed); in cleanPublicFreeLists()
1315 while (block) { in cleanPublicFreeLists()
1316 MALLOC_ASSERT( block->isOwnedByCurrentThread(), ASSERT_TEXT ); in cleanPublicFreeLists()
1317 Block* tmp = block->nextPrivatizable.load(std::memory_order_relaxed); in cleanPublicFreeLists()
1318 block->nextPrivatizable.store((Block*)this, std::memory_order_relaxed); in cleanPublicFreeLists()
1319 block->privatizePublicFreeList(); in cleanPublicFreeLists()
1320 if (block->empty()) { in cleanPublicFreeLists()
1321 processEmptyBlock(block, /*poolTheBlock=*/false); in cleanPublicFreeLists()
1324 block->adjustPositionInBin(this); in cleanPublicFreeLists()
1325 block = tmp; in cleanPublicFreeLists()
1600 Block *block = bins[index].pop(); in get() local
1601 if (block) { in get()
1603 block->privatizeOrphaned(tls, index); in get()
1605 return block; in get()
1608 void OrphanedBlocks::put(intptr_t binTag, Block *block) in put() argument
1610 unsigned int index = getIndex(block->getSize()); in put()
1611 block->shareOrphaned(binTag, index); in put()
1613 bins[index].push(block); in put()
1626 Block* block = bins[i].grab(); in cleanup() local
1628 while (block) { in cleanup()
1629 Block* next = block->next; in cleanup()
1630 … block->privatizePublicFreeList( /*reset=*/false ); // do not set publicFreeList to nullptr in cleanup()
1631 if (block->empty()) { in cleanup()
1632 block->reset(); in cleanup()
1635 removeBackRef(*(block->getBackRefIdx())); in cleanup()
1636 backend->putSlabBlock(block); in cleanup()
1640 bins[i].push(block); in cleanup()
1642 block = next; in cleanup()
1664 void FreeBlockPool::returnBlock(Block *block) in returnBlock() argument
1690 block->next = localHead; in returnBlock()
1691 head.store(block, std::memory_order_release); in returnBlock()
1728 inline void Bin::setActiveBlock (Block *block) in setActiveBlock() argument
1731 MALLOC_ASSERT( block->isOwnedByCurrentThread(), ASSERT_TEXT ); in setActiveBlock()
1733 activeBlk = block; in setActiveBlock()
1855 StartupBlock *block = static_cast<StartupBlock*>( in getBlock() local
1857 if (!block) return nullptr; in getBlock()
1859 block->cleanBlockHeader(); in getBlock()
1860 setBackRef(backRefIdx, block); in getBlock()
1861 block->backRefIdx = backRefIdx; in getBlock()
1863 block->objectSize = startupAllocObjSizeMark; in getBlock()
1864 block->bumpPtr = (FreeObject *)((uintptr_t)block + sizeof(StartupBlock)); in getBlock()
1865 return block; in getBlock()
2175 void Bin::moveBlockToFront(Block *block) in moveBlockToFront() argument
2178 if (block == activeBlk) return; in moveBlockToFront()
2179 outofTLSBin(block); in moveBlockToFront()
2180 pushTLSBin(block); in moveBlockToFront()
2183 void Bin::processEmptyBlock(Block *block, bool poolTheBlock) in processEmptyBlock() argument
2185 if (block != activeBlk) { in processEmptyBlock()
2187 outofTLSBin(block); in processEmptyBlock()
2188 block->getMemPool()->returnEmptyBlock(block, poolTheBlock); in processEmptyBlock()
2191 block->restoreBumpPtr(); in processEmptyBlock()
2435 Block* block = (Block *)alignDown(ptr, slabSize); in reallocAligned() local
2436 copySize = block->findObjectSize(ptr); in reallocAligned()
2533 Block *block = (Block *)alignDown(object, slabSize); in freeSmallObject() local
2534 block->checkFreePrecond(object); in freeSmallObject()
2537 if (block->isStartupAllocObject()) { in freeSmallObject()
2538 ((StartupBlock *)block)->free(object); in freeSmallObject()
2542 if (block->isOwnedByCurrentThread()) { in freeSmallObject()
2543 block->freeOwnObject(object); in freeSmallObject()
2545 FreeObject *objectToFree = block->findObjectToFree(object); in freeSmallObject()
2546 block->freePublicObject(objectToFree); in freeSmallObject()
2679 Block *block = (Block*)alignDown(ptr, slabSize); in internalMsize() local
2680 return block->findObjectSize(ptr); in internalMsize()
2807 Block *block = (Block*)alignDown(object, slabSize); in pool_identify() local
2808 pool = block->getMemPool(); in pool_identify()