Merge branch 'dev' into dev-slice
This commit is contained in:
commit
90c8f0516c
@ -22,17 +22,26 @@ terms of the MIT license. A copy of the license can be found in the file
|
|||||||
#include <new>
|
#include <new>
|
||||||
#include <mimalloc.h>
|
#include <mimalloc.h>
|
||||||
|
|
||||||
|
#if defined(_MSC_VER) && defined(_Ret_notnull_) && defined(_Post_writable_byte_size_)
|
||||||
|
// stay consistent with VCRT definitions
|
||||||
|
#define mi_decl_new(n) mi_decl_nodiscard mi_decl_restrict _Ret_notnull_ _Post_writable_byte_size_(n)
|
||||||
|
#define mi_decl_new_nothrow(n) mi_decl_nodiscard mi_decl_restrict _Ret_maybenull_ _Success_(return != NULL) _Post_writable_byte_size_(n)
|
||||||
|
#else
|
||||||
|
#define mi_decl_new(n) mi_decl_nodiscard mi_decl_restrict
|
||||||
|
#define mi_decl_new_nothrow(n) mi_decl_nodiscard mi_decl_restrict
|
||||||
|
#endif
|
||||||
|
|
||||||
void operator delete(void* p) noexcept { mi_free(p); };
|
void operator delete(void* p) noexcept { mi_free(p); };
|
||||||
void operator delete[](void* p) noexcept { mi_free(p); };
|
void operator delete[](void* p) noexcept { mi_free(p); };
|
||||||
|
|
||||||
void operator delete (void* p, const std::nothrow_t&) noexcept { mi_free(p); }
|
void operator delete (void* p, const std::nothrow_t&) noexcept { mi_free(p); }
|
||||||
void operator delete[](void* p, const std::nothrow_t&) noexcept { mi_free(p); }
|
void operator delete[](void* p, const std::nothrow_t&) noexcept { mi_free(p); }
|
||||||
|
|
||||||
void* operator new(std::size_t n) noexcept(false) { return mi_new(n); }
|
mi_decl_new(n) void* operator new(std::size_t n) noexcept(false) { return mi_new(n); }
|
||||||
void* operator new[](std::size_t n) noexcept(false) { return mi_new(n); }
|
mi_decl_new(n) void* operator new[](std::size_t n) noexcept(false) { return mi_new(n); }
|
||||||
|
|
||||||
void* operator new (std::size_t n, const std::nothrow_t& tag) noexcept { (void)(tag); return mi_new_nothrow(n); }
|
mi_decl_new_nothrow(n) void* operator new (std::size_t n, const std::nothrow_t& tag) noexcept { (void)(tag); return mi_new_nothrow(n); }
|
||||||
void* operator new[](std::size_t n, const std::nothrow_t& tag) noexcept { (void)(tag); return mi_new_nothrow(n); }
|
mi_decl_new_nothrow(n) void* operator new[](std::size_t n, const std::nothrow_t& tag) noexcept { (void)(tag); return mi_new_nothrow(n); }
|
||||||
|
|
||||||
#if (__cplusplus >= 201402L || _MSC_VER >= 1916)
|
#if (__cplusplus >= 201402L || _MSC_VER >= 1916)
|
||||||
void operator delete (void* p, std::size_t n) noexcept { mi_free_size(p,n); };
|
void operator delete (void* p, std::size_t n) noexcept { mi_free_size(p,n); };
|
||||||
|
@ -28,8 +28,10 @@ terms of the MIT license. A copy of the license can be found in the file
|
|||||||
#define mi_decl_nodiscard [[nodiscard]]
|
#define mi_decl_nodiscard [[nodiscard]]
|
||||||
#elif (defined(__GNUC__) && (__GNUC__ >= 4)) || defined(__clang__) // includes clang, icc, and clang-cl
|
#elif (defined(__GNUC__) && (__GNUC__ >= 4)) || defined(__clang__) // includes clang, icc, and clang-cl
|
||||||
#define mi_decl_nodiscard __attribute__((warn_unused_result))
|
#define mi_decl_nodiscard __attribute__((warn_unused_result))
|
||||||
|
#elif defined(_HAS_NODISCARD)
|
||||||
|
#define mi_decl_nodiscard _NODISCARD
|
||||||
#elif (_MSC_VER >= 1700)
|
#elif (_MSC_VER >= 1700)
|
||||||
#define mi_decl_nodiscard _Check_return_
|
#define mi_decl_nodiscard _Check_return_
|
||||||
#else
|
#else
|
||||||
#define mi_decl_nodiscard
|
#define mi_decl_nodiscard
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user