aboutsummaryrefslogtreecommitdiffstats
path: root/vespamalloc
diff options
context:
space:
mode:
authorTor Egge <Tor.Egge@broadpark.no>2019-08-02 14:26:44 +0200
committerTor Egge <Tor.Egge@broadpark.no>2019-08-02 14:26:44 +0200
commitf1977a78bebfaab64bcf265cbc9220d55b33cd13 (patch)
tree4b314286ea947c4c6c139c124d4c2fa0f9037b2a /vespamalloc
parent9690ec8362adfe2c977efb0c77f0147cecb52dd5 (diff)
Deinline rarely called methods.
Add explicit instantiation declaration for MemBlock.
Diffstat (limited to 'vespamalloc')
-rw-r--r--vespamalloc/src/vespamalloc/malloc/globalpool.h5
-rw-r--r--vespamalloc/src/vespamalloc/malloc/globalpool.hpp8
-rw-r--r--vespamalloc/src/vespamalloc/malloc/memblock.h4
-rw-r--r--vespamalloc/src/vespamalloc/malloc/memblock.hpp7
4 files changed, 19 insertions, 5 deletions
diff --git a/vespamalloc/src/vespamalloc/malloc/globalpool.h b/vespamalloc/src/vespamalloc/malloc/globalpool.h
index 6a05d14a901..bc13231bb85 100644
--- a/vespamalloc/src/vespamalloc/malloc/globalpool.h
+++ b/vespamalloc/src/vespamalloc/malloc/globalpool.h
@@ -27,10 +27,7 @@ public:
DataSegment<MemBlockPtrT> & dataSegment() { return _dataSegment; }
void enableThreadSupport() __attribute__((noinline));
- static void setParams(size_t alwaysReuseLimit, size_t threadCacheLimit) {
- _alwaysReuseLimit = alwaysReuseLimit;
- _threadCacheLimit = threadCacheLimit;
- }
+ static void setParams(size_t alwaysReuseLimit, size_t threadCacheLimit);
void info(FILE * os, size_t level=0) __attribute__((noinline));
private:
diff --git a/vespamalloc/src/vespamalloc/malloc/globalpool.hpp b/vespamalloc/src/vespamalloc/malloc/globalpool.hpp
index 5cc172750c5..c954c1aae26 100644
--- a/vespamalloc/src/vespamalloc/malloc/globalpool.hpp
+++ b/vespamalloc/src/vespamalloc/malloc/globalpool.hpp
@@ -35,6 +35,14 @@ void AllocPoolT<MemBlockPtrT>::enableThreadSupport()
}
template <typename MemBlockPtrT>
+void
+AllocPoolT<MemBlockPtrT>::setParams(size_t alwaysReuseLimit, size_t threadCacheLimit)
+{
+ _alwaysReuseLimit = alwaysReuseLimit;
+ _threadCacheLimit = threadCacheLimit;
+}
+
+template <typename MemBlockPtrT>
typename AllocPoolT<MemBlockPtrT>::ChunkSList *
AllocPoolT<MemBlockPtrT>::getFree(SizeClassT sc)
{
diff --git a/vespamalloc/src/vespamalloc/malloc/memblock.h b/vespamalloc/src/vespamalloc/malloc/memblock.h
index 85dd725749c..118fb0e046c 100644
--- a/vespamalloc/src/vespamalloc/malloc/memblock.h
+++ b/vespamalloc/src/vespamalloc/malloc/memblock.h
@@ -45,7 +45,7 @@ public:
static size_t unAdjustSize(size_t sz) { return sz; }
static void dumpInfo(size_t level);
static void dumpFile(FILE * fp) { _logFile = fp; }
- static void bigBlockLimit(size_t lim) { _bigBlockLimit = lim; }
+ static void bigBlockLimit(size_t lim);
static void setFill(uint8_t ) { }
static bool verifySizeClass(int sc) { (void) sc; return true; }
static size_t getMinSizeForAlignment(size_t align, size_t sz) {
@@ -60,6 +60,8 @@ private:
};
typedef MemBlockT<5, 20> MemBlock;
+template <> void MemBlock::dumpInfo(size_t level);
+extern template class MemBlockT<5, 20>;
}
diff --git a/vespamalloc/src/vespamalloc/malloc/memblock.hpp b/vespamalloc/src/vespamalloc/malloc/memblock.hpp
index e6df3bcc67e..57b5a8cac51 100644
--- a/vespamalloc/src/vespamalloc/malloc/memblock.hpp
+++ b/vespamalloc/src/vespamalloc/malloc/memblock.hpp
@@ -29,6 +29,13 @@ MemBlockT<MinSizeClassC, MaxSizeClassMultiAllocC>::logBigBlock(size_t exact, siz
}
template <size_t MinSizeClassC, size_t MaxSizeClassMultiAllocC>
+void
+MemBlockT<MinSizeClassC, MaxSizeClassMultiAllocC>::bigBlockLimit(size_t lim)
+{
+ _bigBlockLimit = lim;
+}
+
+template <size_t MinSizeClassC, size_t MaxSizeClassMultiAllocC>
FILE * MemBlockT<MinSizeClassC, MaxSizeClassMultiAllocC>::_logFile = stderr;
template <size_t MinSizeClassC, size_t MaxSizeClassMultiAllocC>
size_t MemBlockT<MinSizeClassC, MaxSizeClassMultiAllocC>::_bigBlockLimit = 0x80000000;