aboutsummaryrefslogtreecommitdiffstats
path: root/vespamalloc/src/vespamalloc/malloc/globalpool.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'vespamalloc/src/vespamalloc/malloc/globalpool.hpp')
-rw-r--r--vespamalloc/src/vespamalloc/malloc/globalpool.hpp8
1 files changed, 7 insertions, 1 deletions
diff --git a/vespamalloc/src/vespamalloc/malloc/globalpool.hpp b/vespamalloc/src/vespamalloc/malloc/globalpool.hpp
index a3930c7cca1..69f2a2cf820 100644
--- a/vespamalloc/src/vespamalloc/malloc/globalpool.hpp
+++ b/vespamalloc/src/vespamalloc/malloc/globalpool.hpp
@@ -122,11 +122,17 @@ AllocPoolT<MemBlockPtrT>::exchangeAlloc(SizeClassT sc, typename AllocPoolT<MemBl
}
template <typename MemBlockPtrT>
+size_t
+AllocPoolT<MemBlockPtrT>::computeExactSize(size_t sz) {
+ return (((sz + (_alwaysReuseLimit - 1)) / _alwaysReuseLimit) * _alwaysReuseLimit);
+}
+
+template <typename MemBlockPtrT>
typename AllocPoolT<MemBlockPtrT>::ChunkSList *
AllocPoolT<MemBlockPtrT>::exactAlloc(size_t exactSize, SizeClassT sc,
typename AllocPoolT<MemBlockPtrT>::ChunkSList * csl)
{
- size_t adjustedSize((( exactSize + (_alwaysReuseLimit - 1))/_alwaysReuseLimit)*_alwaysReuseLimit);
+ size_t adjustedSize = computeExactSize(exactSize);
void *exactBlock = _dataSegment.getBlock(adjustedSize, sc);
MemBlockPtrT mem(exactBlock, MemBlockPtrT::unAdjustSize(adjustedSize));
csl->add(mem);