From 6c27b59e13b79bb4e435cb0008f819d76bdafd77 Mon Sep 17 00:00:00 2001 From: David CARLIER Date: Tue, 31 Jan 2023 09:22:50 +0000 Subject: [PATCH] adding few more c++17 operators override. (#581) --- src/snmalloc/override/new.cc | 48 ++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/src/snmalloc/override/new.cc b/src/snmalloc/override/new.cc index c0acc95..84f0cfc 100644 --- a/src/snmalloc/override/new.cc +++ b/src/snmalloc/override/new.cc @@ -71,3 +71,51 @@ void operator delete[](void* p, std::nothrow_t&) { ThreadAlloc::get().dealloc(p); } + +void* operator new(size_t size, std::align_val_t val) +{ + size = aligned_size(size, size_t(val)); + return ThreadAlloc::get().alloc(size); +} + +void* operator new[](size_t size, std::align_val_t val) +{ + size = aligned_size(size, size_t(val)); + return ThreadAlloc::get().alloc(size); +} + +void* operator new(size_t size, std::align_val_t val, std::nothrow_t&) +{ + size = aligned_size(size, size_t(val)); + return ThreadAlloc::get().alloc(size); +} + +void* operator new[](size_t size, std::align_val_t val, std::nothrow_t&) +{ + size = aligned_size(size, size_t(val)); + return ThreadAlloc::get().alloc(size); +} + +void operator delete(void* p, std::align_val_t)EXCEPTSPEC +{ + ThreadAlloc::get().dealloc(p); +} + +void operator delete[](void* p, std::align_val_t) EXCEPTSPEC +{ + ThreadAlloc::get().dealloc(p); +} + +void operator delete(void* p, size_t size, std::align_val_t val)EXCEPTSPEC +{ + size = aligned_size(size, size_t(val)); + ThreadAlloc::get().dealloc(p, size); +} + +void operator delete[](void* p, size_t size, std::align_val_t val) EXCEPTSPEC +{ + if (p == nullptr) + return; + size = aligned_size(size, size_t(val)); + ThreadAlloc::get().dealloc(p, size); +}