summaryrefslogtreecommitdiffstats
path: root/vespalib
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2021-03-30 09:26:51 +0000
committerHenning Baldersheim <balder@yahoo-inc.com>2021-03-30 09:26:51 +0000
commit1e36ddc5124cab3cabad5e77ef588ba15d90cf03 (patch)
tree10b64376e2d0c9d95cb832bf12dbc3dd3b672e64 /vespalib
parentfe03be062c4ce87aab521237f975b375e54b2906 (diff)
Inline the cheap part of the Alloc destructor.
Diffstat (limited to 'vespalib')
-rw-r--r--vespalib/src/vespa/vespalib/util/alloc.cpp10
-rw-r--r--vespalib/src/vespa/vespalib/util/alloc.h7
2 files changed, 10 insertions, 7 deletions
diff --git a/vespalib/src/vespa/vespalib/util/alloc.cpp b/vespalib/src/vespa/vespalib/util/alloc.cpp
index d86d35be4c7..b6003f43792 100644
--- a/vespalib/src/vespa/vespalib/util/alloc.cpp
+++ b/vespalib/src/vespa/vespalib/util/alloc.cpp
@@ -473,12 +473,10 @@ Alloc::Alloc(const MemoryAllocator * allocator, size_t sz) noexcept
{
}
-Alloc::~Alloc()
-{
- if (_alloc.first != nullptr) {
- _allocator->free(_alloc);
- _alloc.first = nullptr;
- }
+void
+Alloc::free() {
+ _allocator->free(_alloc);
+ _alloc.first = nullptr;
}
Alloc&
diff --git a/vespalib/src/vespa/vespalib/util/alloc.h b/vespalib/src/vespa/vespalib/util/alloc.h
index a1bb6af6514..f1cb0fb0337 100644
--- a/vespalib/src/vespa/vespalib/util/alloc.h
+++ b/vespalib/src/vespa/vespalib/util/alloc.h
@@ -43,7 +43,11 @@ public:
}
Alloc & operator=(Alloc && rhs) noexcept;
Alloc() noexcept : _alloc(nullptr, 0), _allocator(nullptr) { }
- ~Alloc();
+ ~Alloc() {
+ if (_alloc.first != nullptr) {
+ free();
+ }
+ }
void swap(Alloc & rhs) noexcept {
std::swap(_alloc, rhs._alloc);
std::swap(_allocator, rhs._allocator);
@@ -72,6 +76,7 @@ private:
_alloc.second = 0;
_allocator = nullptr;
}
+ void free();
PtrAndSize _alloc;
const MemoryAllocator * _allocator;
};