From a999f35f0fad27798fdc88a3f5cdf2e3e9041594 Mon Sep 17 00:00:00 2001 From: Adriano dos Santos Fernandes Date: Mon, 31 May 2021 08:55:26 -0300 Subject: [PATCH] Replace FB_NOTHROW by noexcept and remove FB_THROW. --- src/common/classes/alloc.cpp | 128 +++++++++++++++++------------------ src/common/classes/alloc.h | 74 ++++++++------------ 2 files changed, 94 insertions(+), 108 deletions(-) diff --git a/src/common/classes/alloc.cpp b/src/common/classes/alloc.cpp index 1bd6ad4f09d..ee91ab89df8 100644 --- a/src/common/classes/alloc.cpp +++ b/src/common/classes/alloc.cpp @@ -68,19 +68,19 @@ #define VALGRIND_FIX_IT // overrides suspicious valgrind behavior #endif // USE_VALGRIND -void* operator new(size_t s ALLOC_PARAMS) FB_THROW (OOM_EXCEPTION) +void* operator new(size_t s ALLOC_PARAMS) { return MemoryPool::globalAlloc(s ALLOC_PASS_ARGS); } -void* operator new[](size_t s ALLOC_PARAMS) FB_THROW (OOM_EXCEPTION) +void* operator new[](size_t s ALLOC_PARAMS) { return MemoryPool::globalAlloc(s ALLOC_PASS_ARGS); } -void operator delete(void* mem ALLOC_PARAMS) FB_NOTHROW +void operator delete(void* mem ALLOC_PARAMS) noexcept { MemoryPool::globalFree(mem); } -void operator delete[](void* mem ALLOC_PARAMS) FB_NOTHROW +void operator delete[](void* mem ALLOC_PARAMS) noexcept { MemoryPool::globalFree(mem); } @@ -109,7 +109,7 @@ static const int GUARD_BYTES = 0; #endif template -T absVal(T n) FB_NOTHROW +T absVal(T n) noexcept { return n < 0 ? -n : n; } @@ -160,7 +160,7 @@ struct FailedBlock FailedBlock* failedList = NULL; #endif -void corrupt(const char* text) FB_NOTHROW +void corrupt(const char* text) noexcept { #ifdef DEV_BUILD fprintf(stderr, "%s\n", text); @@ -377,7 +377,7 @@ class MemHeader #ifdef MEM_DEBUG void print_contents(bool used, FILE* file, bool used_only, - const char* filter_path, const size_t filter_len) FB_NOTHROW + const char* filter_path, const size_t filter_len) noexcept { if (used || !used_only) { @@ -406,7 +406,7 @@ class MemHeader } #endif - void validate(MemPool* p, StatInt& vUse) FB_NOTHROW + void validate(MemPool* p, StatInt& vUse) noexcept { if (p == pool && !isExtent()) vUse += getSize(); @@ -461,7 +461,7 @@ class MemBaseHunk } public: - void validate(MemPool* pool, size_t hdr, StatInt& vMap, StatInt& vUse) FB_NOTHROW + void validate(MemPool* pool, size_t hdr, StatInt& vMap, StatInt& vUse) noexcept { if (length >= DEFAULT_ALLOCATION) { @@ -526,7 +526,7 @@ class MemSmallHunk : public MemBaseHunk #ifdef MEM_DEBUG void print_contents(FILE* file, MemPool* pool, bool used_only, - const char* filter_path, const size_t filter_len) FB_NOTHROW + const char* filter_path, const size_t filter_len) noexcept { UCHAR* m = ((UCHAR*) this) + hdrSize(); fprintf(file, "Small hunk %p: memory=[%p:%p) spaceRemaining=%" SIZEFORMAT " length=%" SIZEFORMAT "\n", @@ -598,7 +598,7 @@ class MemMediumHunk : public MemBaseHunk #ifdef MEM_DEBUG void print_contents(FILE* file, MemPool* pool, bool used_only, - const char* filter_path, const size_t filter_len) FB_NOTHROW + const char* filter_path, const size_t filter_len) noexcept { UCHAR* m = ((UCHAR*) this) + hdrSize(); fprintf(file, "Medium hunk %p: memory=[%p:%p) spaceRemaining=%" SIZEFORMAT " length=%" SIZEFORMAT "\n", @@ -630,7 +630,7 @@ class MemBigHunk #ifdef MEM_DEBUG void print_contents(FILE* file, MemPool* pool, bool used_only, - const char* filter_path, const size_t filter_len) FB_NOTHROW + const char* filter_path, const size_t filter_len) noexcept { fprintf(file, "Big hunk %p: memory=%p length=%" SIZEFORMAT "\n", this, block, length); @@ -1647,7 +1647,7 @@ class FreeObjects ~FreeObjects(); - FreeObjPtr allocateBlock(MemPool* pool, size_t from, size_t& size) FB_THROW (OOM_EXCEPTION) + FreeObjPtr allocateBlock(MemPool* pool, size_t from, size_t& size) { size_t full_size = size + (from ? 0 : ListBuilder::MEM_OVERHEAD); if (full_size > Limits::TOP_LIMIT) @@ -1696,7 +1696,7 @@ class FreeObjects #ifdef MEM_DEBUG void print_contents(FILE* file, MemPool* pool, bool used_only, - const char* filter_path, const size_t filter_len) FB_NOTHROW + const char* filter_path, const size_t filter_len) noexcept { for (Extent* ext = currentExtent; ext; ext = ext->next) ext->print_contents(file, pool, used_only, filter_path, filter_len); @@ -1717,7 +1717,7 @@ class FreeObjects ListBuilder listBuilder; Extent* currentExtent; - MemBlock* newBlock(MemPool* pool, unsigned slot) FB_THROW (OOM_EXCEPTION); + MemBlock* newBlock(MemPool* pool, unsigned slot); }; @@ -1799,26 +1799,26 @@ class MemPool }; #endif // VALIDATE_POOL - MemBlock* alloc(size_t from, size_t& length, bool flagRedirect) FB_THROW (OOM_EXCEPTION); - void releaseBlock(MemBlock *block, bool flagDecr) FB_NOTHROW; + MemBlock* alloc(size_t from, size_t& length, bool flagRedirect); + void releaseBlock(MemBlock *block, bool flagDecr) noexcept; public: - void* allocate(size_t size ALLOC_PARAMS) FB_THROW (OOM_EXCEPTION); - MemBlock* allocate2(size_t from, size_t& size ALLOC_PARAMS) FB_THROW (OOM_EXCEPTION); + void* allocate(size_t size ALLOC_PARAMS); + MemBlock* allocate2(size_t from, size_t& size ALLOC_PARAMS); private: - virtual void memoryIsExhausted(void) FB_THROW (OOM_EXCEPTION); - void* allocRaw(size_t length) FB_THROW (OOM_EXCEPTION); - static void releaseMemory(void* block, bool flagExtent) FB_NOTHROW; - static void releaseRaw(bool destroying, void *block, size_t size, bool use_cache = true) FB_NOTHROW; - void* getExtent(size_t from, size_t& to) FB_THROW (OOM_EXCEPTION); + virtual void memoryIsExhausted(void); + void* allocRaw(size_t length); + static void releaseMemory(void* block, bool flagExtent) noexcept; + static void releaseRaw(bool destroying, void *block, size_t size, bool use_cache = true) noexcept; + void* getExtent(size_t from, size_t& to); public: - static void releaseExtent(bool destroying, void *block, size_t size, MemPool* pool) FB_NOTHROW; + static void releaseExtent(bool destroying, void *block, size_t size, MemPool* pool) noexcept; // pass desired size, return actual extent size template - void newExtent(size_t& size, Extent** linkedList) FB_THROW (OOM_EXCEPTION); + void newExtent(size_t& size, Extent** linkedList); private: #ifdef USE_VALGRIND @@ -1830,9 +1830,9 @@ class MemPool public: static void deletePool(MemPool* pool); - static void globalFree(void* block) FB_NOTHROW; + static void globalFree(void* block) noexcept; - static void deallocate(void* block) FB_NOTHROW; + static void deallocate(void* block) noexcept; bool validate(char* buf, FB_SIZE_T size); // Create memory pool instance @@ -1840,7 +1840,7 @@ class MemPool // Set statistics group for pool. Usage counters will be decremented from // previously set group and added to new - void setStatsGroup(MemoryStats& stats) FB_NOTHROW; + void setStatsGroup(MemoryStats& stats) noexcept; // Initialize and finalize global memory pool static MemPool* init() @@ -1893,25 +1893,25 @@ class MemPool } // Statistics - void increment_usage(size_t size) FB_NOTHROW + void increment_usage(size_t size) noexcept { stats->increment_usage(size); used_memory += size; } - void decrement_usage(size_t size) FB_NOTHROW + void decrement_usage(size_t size) noexcept { stats->decrement_usage(size); used_memory -= size; } - void increment_mapping(size_t size) FB_NOTHROW + void increment_mapping(size_t size) noexcept { stats->increment_mapping(size); mapped_memory += size; } - void decrement_mapping(size_t size) FB_NOTHROW + void decrement_mapping(size_t size) noexcept { stats->decrement_mapping(size); mapped_memory -= size; @@ -1919,9 +1919,9 @@ class MemPool #ifdef MEM_DEBUG // Print out pool contents. This is debugging routine - void print_contents(FILE*, unsigned flags, const char* filter_path) FB_NOTHROW; + void print_contents(FILE*, unsigned flags, const char* filter_path) noexcept; // The same routine, but more easily callable from the debugger - void print_contents(const char* filename, unsigned flags, const char* filter_path) FB_NOTHROW; + void print_contents(const char* filename, unsigned flags, const char* filter_path) noexcept; private: MemPool* next; @@ -1961,7 +1961,7 @@ void DoubleLinkedList::decrUsage(MemMediumHunk* hunk, MemPool* pool) template -MemBlock* FreeObjects::newBlock(MemPool* pool, unsigned slot) FB_THROW (OOM_EXCEPTION) +MemBlock* FreeObjects::newBlock(MemPool* pool, unsigned slot) { size_t size = Limits::getSize(slot); @@ -2170,7 +2170,7 @@ MemPool::~MemPool(void) } template -void MemPool::newExtent(size_t& size, Extent** linkedList) FB_THROW(OOM_EXCEPTION) +void MemPool::newExtent(size_t& size, Extent** linkedList) { // No large enough block found. We need to extend the pool void* memory = NULL; @@ -2214,7 +2214,7 @@ MemoryPool* MemoryPool::createPool(MemoryPool* parentPool, MemoryStats& stats) return FB_NEW_POOL(*parentPool) MemoryPool(p); } -void MemPool::setStatsGroup(MemoryStats& newStats) FB_NOTHROW +void MemPool::setStatsGroup(MemoryStats& newStats) noexcept { MutexLockGuard guard(mutex, "MemPool::setStatsGroup"); @@ -2230,12 +2230,12 @@ void MemPool::setStatsGroup(MemoryStats& newStats) FB_NOTHROW stats->increment_usage(sav_used_memory); } -void MemoryPool::setStatsGroup(MemoryStats& newStats) FB_NOTHROW +void MemoryPool::setStatsGroup(MemoryStats& newStats) noexcept { pool->setStatsGroup(newStats); } -MemBlock* MemPool::alloc(size_t from, size_t& length, bool flagRedirect) FB_THROW (OOM_EXCEPTION) +MemBlock* MemPool::alloc(size_t from, size_t& length, bool flagRedirect) { MutexEnsureUnlock guard(mutex, "MemPool::alloc"); guard.enter(); @@ -2294,7 +2294,7 @@ MemBlock* MemPool::allocate2(size_t from, size_t& size #ifdef DEBUG_GDS_ALLOC , const char* fileName, int line #endif -) FB_THROW (OOM_EXCEPTION) +) { size_t length = from ? size : ROUNDUP(size + VALGRIND_REDZONE, roundingSize) + GUARD_BYTES; MemBlock* memory = alloc(from, length, true); @@ -2324,7 +2324,7 @@ MemBlock* MemPool::allocate2(size_t from, size_t& size } -void* MemPool::allocate(size_t size ALLOC_PARAMS) FB_THROW (OOM_EXCEPTION) +void* MemPool::allocate(size_t size ALLOC_PARAMS) { #ifdef VALIDATE_POOL MutexLockGuard guard(mutex, "MemPool::allocate"); @@ -2339,7 +2339,7 @@ void* MemPool::allocate(size_t size ALLOC_PARAMS) FB_THROW (OOM_EXCEPTION) } -void MemPool::releaseMemory(void* object, bool flagExtent) FB_NOTHROW +void MemPool::releaseMemory(void* object, bool flagExtent) noexcept { if (object) { @@ -2403,7 +2403,7 @@ void MemPool::releaseMemory(void* object, bool flagExtent) FB_NOTHROW } } -void MemPool::releaseBlock(MemBlock* block, bool decrUsage) FB_NOTHROW +void MemPool::releaseBlock(MemBlock* block, bool decrUsage) noexcept { if (block->pool != this) corrupt("bad block released"); @@ -2464,12 +2464,12 @@ void MemPool::releaseBlock(MemBlock* block, bool decrUsage) FB_NOTHROW releaseRaw(pool_destroying, hunk, hunk->length, false); } -void MemPool::memoryIsExhausted(void) FB_THROW (OOM_EXCEPTION) +void MemPool::memoryIsExhausted(void) { Firebird::BadAlloc::raise(); } -void* MemPool::allocRaw(size_t size) FB_THROW (OOM_EXCEPTION) +void* MemPool::allocRaw(size_t size) { #ifndef USE_VALGRIND if (size == DEFAULT_ALLOCATION) @@ -2549,7 +2549,7 @@ void* MemPool::allocRaw(size_t size) FB_THROW (OOM_EXCEPTION) } -void* MemPool::getExtent(size_t from, size_t& to) FB_THROW(OOM_EXCEPTION) // pass desired minimum size, return actual extent size +void* MemPool::getExtent(size_t from, size_t& to) // pass desired minimum size, return actual extent size { #ifdef VALIDATE_POOL MutexLockGuard guard(mutex, "MemPool::getExtent"); @@ -2560,7 +2560,7 @@ void* MemPool::getExtent(size_t from, size_t& to) FB_THROW(OOM_EXCEPTION) // pa } -void MemPool::releaseExtent(bool destroying, void* block, size_t size, MemPool* pool) FB_NOTHROW +void MemPool::releaseExtent(bool destroying, void* block, size_t size, MemPool* pool) noexcept { if (size < DEFAULT_ALLOCATION) releaseMemory(block, true); @@ -2573,7 +2573,7 @@ void MemPool::releaseExtent(bool destroying, void* block, size_t size, MemPool* } -void MemPool::releaseRaw(bool destroying, void* block, size_t size, bool use_cache) FB_NOTHROW +void MemPool::releaseRaw(bool destroying, void* block, size_t size, bool use_cache) noexcept { #ifndef USE_VALGRIND if (use_cache && (size == DEFAULT_ALLOCATION)) @@ -2666,19 +2666,19 @@ void MemPool::releaseRaw(bool destroying, void* block, size_t size, bool use_cac } } -void MemPool::globalFree(void* block) FB_NOTHROW +void MemPool::globalFree(void* block) noexcept { deallocate(block); } -void* MemoryPool::calloc(size_t size ALLOC_PARAMS) FB_THROW (OOM_EXCEPTION) +void* MemoryPool::calloc(size_t size ALLOC_PARAMS) { void* block = allocate(size ALLOC_PASS_ARGS); memset(block, 0, size); return block; } -void MemPool::deallocate(void* block) FB_NOTHROW +void MemPool::deallocate(void* block) noexcept { releaseMemory(block, false); } @@ -2720,7 +2720,7 @@ bool MemPool::validate(char* buf, FB_SIZE_T size) } #ifdef MEM_DEBUG -void MemPool::print_contents(const char* filename, unsigned flags, const char* filter_path) FB_NOTHROW +void MemPool::print_contents(const char* filename, unsigned flags, const char* filter_path) noexcept { FILE* out = os_utils::fopen(filename, "w"); if (!out) @@ -2731,7 +2731,7 @@ void MemPool::print_contents(const char* filename, unsigned flags, const char* f } // This member function can't be const because there are calls to the mutex. -void MemPool::print_contents(FILE* file, unsigned flags, const char* filter_path) FB_NOTHROW +void MemPool::print_contents(FILE* file, unsigned flags, const char* filter_path) noexcept { bool used_only = flags & MemoryPool::PRINT_USED_ONLY; @@ -2818,7 +2818,7 @@ MemoryPool& AutoStorage::getAutoMemoryPool() } #ifdef LIBC_CALLS_NEW -void* MemoryPool::globalAlloc(size_t s ALLOC_PARAMS) FB_THROW (OOM_EXCEPTION) +void* MemoryPool::globalAlloc(size_t s ALLOC_PARAMS) { if (!defaultMemoryManager) { @@ -2831,17 +2831,17 @@ void* MemoryPool::globalAlloc(size_t s ALLOC_PARAMS) FB_THROW (OOM_EXCEPTION) } #endif // LIBC_CALLS_NEW -void MemoryPool::globalFree(void* block) FB_NOTHROW +void MemoryPool::globalFree(void* block) noexcept { MemPool::globalFree(block); } -void* MemoryPool::allocate(size_t size ALLOC_PARAMS) FB_THROW (OOM_EXCEPTION) +void* MemoryPool::allocate(size_t size ALLOC_PARAMS) { return pool->allocate(size ALLOC_PASS_ARGS); } -void MemoryPool::deallocate(void* block) FB_NOTHROW +void MemoryPool::deallocate(void* block) noexcept { pool->deallocate(block); } @@ -2870,14 +2870,14 @@ void MemoryPool::deletePool(MemoryPool* pool) delete pool; } -void MemoryPool::print_contents(FILE* file, unsigned flags, const char* filter_path) FB_NOTHROW +void MemoryPool::print_contents(FILE* file, unsigned flags, const char* filter_path) noexcept { #ifdef MEM_DEBUG pool->print_contents(file, flags, filter_path); #endif } -void MemoryPool::print_contents(const char* filename, unsigned flags, const char* filter_path) FB_NOTHROW +void MemoryPool::print_contents(const char* filename, unsigned flags, const char* filter_path) noexcept { #ifdef MEM_DEBUG pool->print_contents(filename, flags, filter_path); @@ -2950,21 +2950,21 @@ void AutoStorage::ProbeStack() const // in a case when we actually need "new" only with file/line information // this version should be also present as a pair for "delete". #ifdef DEBUG_GDS_ALLOC -void* operator new(size_t s) FB_THROW (OOM_EXCEPTION) +void* operator new(size_t s) { return MemoryPool::globalAlloc(s ALLOC_ARGS); } -void* operator new[](size_t s) FB_THROW (OOM_EXCEPTION) +void* operator new[](size_t s) { return MemoryPool::globalAlloc(s ALLOC_ARGS); } -void operator delete(void* mem) FB_NOTHROW +void operator delete(void* mem) noexcept { MemoryPool::globalFree(mem); } -void operator delete[](void* mem) FB_NOTHROW +void operator delete[](void* mem) noexcept { MemoryPool::globalFree(mem); } diff --git a/src/common/classes/alloc.h b/src/common/classes/alloc.h index 65f9afbb8a9..44d9e0ea462 100644 --- a/src/common/classes/alloc.h +++ b/src/common/classes/alloc.h @@ -58,20 +58,6 @@ #include -#define OOM_EXCEPTION std::bad_alloc - -#if __cplusplus >= 201103L -#define FB_NO_THROW_SPECIFIER -#endif - -#ifdef FB_NO_THROW_SPECIFIER -#define FB_THROW(x) -#define FB_NOTHROW noexcept -#else -#define FB_THROW(x) throw(x) -#define FB_NOTHROW throw() -#endif - #ifdef DEBUG_GDS_ALLOC #define FB_NEW new(__FILE__, __LINE__) #define FB_NEW_POOL(pool) new(pool, __FILE__, __LINE__) @@ -106,10 +92,10 @@ class MemoryStats ~MemoryStats() {} - size_t getCurrentUsage() const FB_NOTHROW { return mst_usage.value(); } - size_t getMaximumUsage() const FB_NOTHROW { return mst_max_usage; } - size_t getCurrentMapping() const FB_NOTHROW { return mst_mapped.value(); } - size_t getMaximumMapping() const FB_NOTHROW { return mst_max_mapped; } + size_t getCurrentUsage() const noexcept { return mst_usage.value(); } + size_t getMaximumUsage() const noexcept { return mst_max_usage; } + size_t getCurrentMapping() const noexcept { return mst_mapped.value(); } + size_t getMaximumMapping() const noexcept { return mst_max_mapped; } private: // Forbid copying/assignment @@ -131,7 +117,7 @@ class MemoryStats size_t mst_max_mapped; // These methods are thread-safe due to usage of atomic counters only - void increment_usage(size_t size) FB_NOTHROW + void increment_usage(size_t size) noexcept { for (MemoryStats* statistics = this; statistics; statistics = statistics->mst_parent) { @@ -141,7 +127,7 @@ class MemoryStats } } - void decrement_usage(size_t size) FB_NOTHROW + void decrement_usage(size_t size) noexcept { for (MemoryStats* statistics = this; statistics; statistics = statistics->mst_parent) { @@ -149,7 +135,7 @@ class MemoryStats } } - void increment_mapping(size_t size) FB_NOTHROW + void increment_mapping(size_t size) noexcept { for (MemoryStats* statistics = this; statistics; statistics = statistics->mst_parent) { @@ -159,7 +145,7 @@ class MemoryStats } } - void decrement_mapping(size_t size) FB_NOTHROW + void decrement_mapping(size_t size) noexcept { for (MemoryStats* statistics = this; statistics; statistics = statistics->mst_parent) { @@ -205,21 +191,21 @@ class MemoryPool #define ALLOC_PASS_ARGS #endif // DEBUG_GDS_ALLOC - void* calloc(size_t size ALLOC_PARAMS) FB_THROW (OOM_EXCEPTION); + void* calloc(size_t size ALLOC_PARAMS); #ifdef LIBC_CALLS_NEW - static void* globalAlloc(size_t s ALLOC_PARAMS) FB_THROW (OOM_EXCEPTION); + static void* globalAlloc(size_t s ALLOC_PARAMS); #else - static void* globalAlloc(size_t s ALLOC_PARAMS) FB_THROW (OOM_EXCEPTION) + static void* globalAlloc(size_t s ALLOC_PARAMS) { return defaultMemoryManager->allocate(s ALLOC_PASS_ARGS); } #endif // LIBC_CALLS_NEW - void* allocate(size_t size ALLOC_PARAMS) FB_THROW (OOM_EXCEPTION); + void* allocate(size_t size ALLOC_PARAMS); - static void globalFree(void* mem) FB_NOTHROW; - void deallocate(void* mem) FB_NOTHROW; + static void globalFree(void* mem) noexcept; + void deallocate(void* mem) noexcept; // Set context pool for current thread of execution static MemoryPool* setContextPool(MemoryPool* newPool); @@ -229,7 +215,7 @@ class MemoryPool // Set statistics group for pool. Usage counters will be decremented from // previously set group and added to new - void setStatsGroup(MemoryStats& stats) FB_NOTHROW; + void setStatsGroup(MemoryStats& stats) noexcept; // Initialize and finalize global memory pool static void init(); @@ -241,9 +227,9 @@ class MemoryPool // Print out pool contents. This is debugging routine static const unsigned PRINT_USED_ONLY = 0x01; static const unsigned PRINT_RECURSIVE = 0x02; - void print_contents(FILE*, unsigned flags = 0, const char* filter_path = 0) FB_NOTHROW; + void print_contents(FILE*, unsigned flags = 0, const char* filter_path = 0) noexcept; // The same routine, but more easily callable from the debugger - void print_contents(const char* filename, unsigned flags = 0, const char* filter_path = 0) FB_NOTHROW; + void print_contents(const char* filename, unsigned flags = 0, const char* filter_path = 0) noexcept; public: struct Finalizer @@ -298,7 +284,7 @@ class MemoryPool } // namespace Firebird -static inline Firebird::MemoryPool* getDefaultMemoryPool() FB_NOTHROW +static inline Firebird::MemoryPool* getDefaultMemoryPool() noexcept { fb_assert(Firebird::MemoryPool::defaultMemoryManager); return Firebird::MemoryPool::defaultMemoryManager; @@ -355,36 +341,36 @@ class SubsystemContextPoolHolder : public ContextPoolHolder using Firebird::MemoryPool; // operators new and delete -extern void* operator new(size_t s ALLOC_PARAMS) FB_THROW (OOM_EXCEPTION); -extern void* operator new[](size_t s ALLOC_PARAMS) FB_THROW (OOM_EXCEPTION); -extern void operator delete(void* mem ALLOC_PARAMS) FB_NOTHROW; -extern void operator delete[](void* mem ALLOC_PARAMS) FB_NOTHROW; +extern void* operator new(size_t s ALLOC_PARAMS); +extern void* operator new[](size_t s ALLOC_PARAMS); +extern void operator delete(void* mem ALLOC_PARAMS) noexcept; +extern void operator delete[](void* mem ALLOC_PARAMS) noexcept; -inline void* operator new(size_t s, Firebird::MemoryPool& pool ALLOC_PARAMS) FB_THROW (OOM_EXCEPTION) +inline void* operator new(size_t s, Firebird::MemoryPool& pool ALLOC_PARAMS) { return pool.allocate(s ALLOC_PASS_ARGS); } -inline void* operator new[](size_t s, Firebird::MemoryPool& pool ALLOC_PARAMS) FB_THROW (OOM_EXCEPTION) +inline void* operator new[](size_t s, Firebird::MemoryPool& pool ALLOC_PARAMS) { return pool.allocate(s ALLOC_PASS_ARGS); } -inline void operator delete(void* mem, Firebird::MemoryPool& pool ALLOC_PARAMS) FB_NOTHROW +inline void operator delete(void* mem, Firebird::MemoryPool& pool ALLOC_PARAMS) noexcept { MemoryPool::globalFree(mem); } -inline void operator delete[](void* mem, Firebird::MemoryPool& pool ALLOC_PARAMS) FB_NOTHROW +inline void operator delete[](void* mem, Firebird::MemoryPool& pool ALLOC_PARAMS) noexcept { MemoryPool::globalFree(mem); } #if __cplusplus >= 201402L -inline void operator delete(void* mem, std::size_t s ALLOC_PARAMS) FB_NOTHROW +inline void operator delete(void* mem, std::size_t s ALLOC_PARAMS) noexcept { MemoryPool::globalFree(mem); } -inline void operator delete[](void* mem, std::size_t s ALLOC_PARAMS) FB_NOTHROW +inline void operator delete[](void* mem, std::size_t s ALLOC_PARAMS) noexcept { MemoryPool::globalFree(mem); } @@ -392,8 +378,8 @@ inline void operator delete[](void* mem, std::size_t s ALLOC_PARAMS) FB_NOTHROW #ifdef DEBUG_GDS_ALLOC -extern void operator delete(void* mem) FB_NOTHROW; -extern void operator delete[](void* mem) FB_NOTHROW; +extern void operator delete(void* mem) noexcept; +extern void operator delete[](void* mem) noexcept; #endif // DEBUG_GDS_ALLOC