void forEachAllocation()

in cachelib/allocator/memory/MemoryAllocator.h [569:589]


  void forEachAllocation(AllocTraversalFn&& callback) {
    for (unsigned int idx = 0; idx < slabAllocator_.getNumUsableSlabs();
         ++idx) {
      Slab* slab = slabAllocator_.getSlabForIdx(idx);
      const auto slabHdr = slabAllocator_.getSlabHeader(slab);
      if (!slabHdr) {
        continue;
      }
      auto classId = slabHdr->classId;
      auto poolId = slabHdr->poolId;
      if (poolId == Slab::kInvalidPoolId || classId == Slab::kInvalidClassId ||
          slabHdr->isAdvised() || slabHdr->isMarkedForRelease()) {
        continue;
      }
      auto& pool = memoryPoolManager_.getPoolById(poolId);
      if (!pool.forEachAllocation(
              classId, slab, std::forward<AllocTraversalFn>(callback))) {
        return;
      }
    }
  }