From 584ab041f52fc40d5745c7d42901c726b9679079 Mon Sep 17 00:00:00 2001 From: Otto Moerbeek Date: Fri, 15 Mar 2019 12:23:00 +0100 Subject: [PATCH] Move back to malloc on !OpenBSD. Doing mmap/munmap all the time hurts too much. --- pdns/lazy_allocator.hh | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/pdns/lazy_allocator.hh b/pdns/lazy_allocator.hh index 4851687ba6..68ba53619e 100644 --- a/pdns/lazy_allocator.hh +++ b/pdns/lazy_allocator.hh @@ -43,16 +43,29 @@ struct lazy_allocator { pointer allocate (size_type const n) { +#ifdef __OpenBSD__ void *p = mmap(nullptr, n * sizeof(value_type), PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANON | MAP_STACK, -1, 0); if (p == MAP_FAILED) throw std::bad_alloc(); return static_cast(p); +#else + return static_cast(::operator new (n * sizeof(value_type))); +#endif } void deallocate (pointer const ptr, size_type const n) noexcept { +#ifdef __OpenBSD__ munmap(ptr, n * sizeof(value_type)); +#else +#if defined(__cpp_sized_deallocation) && (__cpp_sized_deallocation >= 201309) + ::operator delete (ptr, n * sizeof(value_type)); +#else + (void) n; + ::operator delete (ptr); +#endif +#endif } void construct (T*) const noexcept {} -- 2.47.2