| 1261 | } |
| 1262 | |
| 1263 | BlockCache::AllocData BlockCache::allocateImpl(const HashedKey& hk, |
| 1264 | const uint32_t valueSize, |
| 1265 | const uint16_t priority, |
| 1266 | const bool canWait) { |
| 1267 | uint32_t size = serializedSize(hk.key().size(), valueSize); |
| 1268 | auto [desc, addr, view] = |
| 1269 | allocator_.allocate(size, priority, canWait, hk.keyHash()); |
| 1270 | if (desc.isReady()) { |
| 1271 | XDCHECK_LE(addr.offset() + size, regionManager_.regionSize()); |
| 1272 | XDCHECK_EQ(size % allocAlignSize_, 0ULL) |
| 1273 | << fmt::format(" alignSize={}, size={}", allocAlignSize_, size); |
| 1274 | } |
| 1275 | return std::make_tuple(std::move(desc), size, std::move(addr), view); |
| 1276 | } |
| 1277 | |
| 1278 | folly::Expected<BlockCache::AllocData, Status> BlockCache::allocateForInsert( |
| 1279 | const HashedKey& hk, const uint32_t valueSize, bool canWait) { |