From d9cce21d61599561392b4347be22d19badb34def Mon Sep 17 00:00:00 2001 From: Jeff Muizelaar Date: Tue, 18 Oct 2011 14:19:23 -0400 Subject: [PATCH] Bug 695171. Make our operator new throw std::bad_alloc. r=cjones If new doesn't throw bad_alloc the compiler emits a null check after to avoid calling the constructor. http://llvm.org/bugs/show_bug.cgi?id=10895 Adding throw(std::bad_alloc) shaves 57KB of .text off a gcc mac build and 61KB off a clang build. --HG-- extra : rebase_source : 098c1f5df472bcc572b812fe5d4f12c8eadf14d2 --- memory/mozalloc/mozalloc.h | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/memory/mozalloc/mozalloc.h b/memory/mozalloc/mozalloc.h index b59b25db17c..8a9d857b35f 100644 --- a/memory/mozalloc/mozalloc.h +++ b/memory/mozalloc/mozalloc.h @@ -214,15 +214,13 @@ MOZALLOC_EXPORT void* moz_valloc(size_t size) * to suppress build warning spam (bug 578546). */ #define MOZALLOC_THROW_IF_HAS_EXCEPTIONS /**/ +#define MOZALLOC_THROW_BAD_ALLOC_IF_HAS_EXCEPTIONS #else #define MOZALLOC_THROW_IF_HAS_EXCEPTIONS throw() +#define MOZALLOC_THROW_BAD_ALLOC_IF_HAS_EXCEPTIONS throw(std::bad_alloc) #endif -#ifdef MOZ_CPP_EXCEPTIONS -#define MOZALLOC_THROW_BAD_ALLOC throw(std::bad_alloc) -#else -#define MOZALLOC_THROW_BAD_ALLOC MOZALLOC_THROW_IF_HAS_EXCEPTIONS -#endif +#define MOZALLOC_THROW_BAD_ALLOC MOZALLOC_THROW_BAD_ALLOC_IF_HAS_EXCEPTIONS MOZALLOC_EXPORT_NEW MOZALLOC_INLINE void* operator new(size_t size) MOZALLOC_THROW_BAD_ALLOC