summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/base/basictypes.h7
-rw-r--r--src/libc_override.h8
-rw-r--r--src/libc_override_gcc_and_weak.h76
-rw-r--r--src/libc_override_redefine.h32
-rw-r--r--src/tests/tcmalloc_unittest.cc2
-rw-r--r--src/windows/get_mangled_names.cc12
6 files changed, 67 insertions, 70 deletions
diff --git a/src/base/basictypes.h b/src/base/basictypes.h
index a22bd9a..42dbe5c 100644
--- a/src/base/basictypes.h
+++ b/src/base/basictypes.h
@@ -433,11 +433,4 @@ namespace base {
enum LinkerInitialized { LINKER_INITIALIZED };
}
-#if __cpp_noexcept_function_type >= 201510
-// Deprecated in C++17
-# define PERFTOOLS_THROW(...)
-#else
-# define PERFTOOLS_THROW(...) throw(__VA_ARGS__)
-#endif
-
#endif // _BASICTYPES_H_
diff --git a/src/libc_override.h b/src/libc_override.h
index c01a97c..7f9cd91 100644
--- a/src/libc_override.h
+++ b/src/libc_override.h
@@ -58,6 +58,14 @@
#endif
#include <gperftools/tcmalloc.h>
+#if __cplusplus >= 201103L
+#define CPP_NOTHROW noexcept
+#define CPP_BADALLOC
+#else
+#define CPP_NOTHROW throw()
+#define CPP_BADALLOC throw(std::bad_alloc)
+#endif
+
static void ReplaceSystemAlloc(); // defined in the .h files below
// For windows, there are two ways to get tcmalloc. If we're
diff --git a/src/libc_override_gcc_and_weak.h b/src/libc_override_gcc_and_weak.h
index c7091d3..6875164 100644
--- a/src/libc_override_gcc_and_weak.h
+++ b/src/libc_override_gcc_and_weak.h
@@ -57,38 +57,34 @@
#define ALIAS(tc_fn) __attribute__ ((alias (#tc_fn), used))
-void* operator new(size_t size) PERFTOOLS_THROW(std::bad_alloc)
- ALIAS(tc_new);
-void operator delete(void* p) PERFTOOLS_NOTHROW
- ALIAS(tc_delete);
-void* operator new[](size_t size) PERFTOOLS_THROW(std::bad_alloc)
- ALIAS(tc_newarray);
-void operator delete[](void* p) PERFTOOLS_NOTHROW
- ALIAS(tc_deletearray);
-void* operator new(size_t size, const std::nothrow_t& nt) PERFTOOLS_NOTHROW
- ALIAS(tc_new_nothrow);
-void* operator new[](size_t size, const std::nothrow_t& nt) PERFTOOLS_NOTHROW
- ALIAS(tc_newarray_nothrow);
-void operator delete(void* p, const std::nothrow_t& nt) PERFTOOLS_NOTHROW
- ALIAS(tc_delete_nothrow);
-void operator delete[](void* p, const std::nothrow_t& nt) PERFTOOLS_NOTHROW
- ALIAS(tc_deletearray_nothrow);
+void* operator new(size_t size) CPP_BADALLOC ALIAS(tc_new);
+void operator delete(void* p) CPP_NOTHROW ALIAS(tc_delete);
+void* operator new[](size_t size) CPP_BADALLOC ALIAS(tc_newarray);
+void operator delete[](void* p) CPP_NOTHROW ALIAS(tc_deletearray);
+void* operator new(size_t size, const std::nothrow_t& nt) CPP_NOTHROW
+ ALIAS(tc_new_nothrow);
+void* operator new[](size_t size, const std::nothrow_t& nt) CPP_NOTHROW
+ ALIAS(tc_newarray_nothrow);
+void operator delete(void* p, const std::nothrow_t& nt) CPP_NOTHROW
+ ALIAS(tc_delete_nothrow);
+void operator delete[](void* p, const std::nothrow_t& nt) CPP_NOTHROW
+ ALIAS(tc_deletearray_nothrow);
#if defined(ENABLE_SIZED_DELETE)
-void operator delete(void *p, size_t size) PERFTOOLS_NOTHROW
+void operator delete(void *p, size_t size) CPP_NOTHROW
ALIAS(tc_delete_sized);
-void operator delete[](void *p, size_t size) PERFTOOLS_NOTHROW
+void operator delete[](void *p, size_t size) CPP_NOTHROW
ALIAS(tc_deletearray_sized);
#elif defined(ENABLE_DYNAMIC_SIZED_DELETE) && \
(__GNUC__ * 100 + __GNUC_MINOR__) >= 405
-static void delegate_sized_delete(void *p, size_t s) PERFTOOLS_NOTHROW {
+static void delegate_sized_delete(void *p, size_t s) {
(operator delete)(p);
}
-static void delegate_sized_deletearray(void *p, size_t s) PERFTOOLS_NOTHROW {
+static void delegate_sized_deletearray(void *p, size_t s) {
(operator delete[])(p);
}
@@ -122,44 +118,44 @@ static void *resolve_deletearray_sized(void) {
}
-void operator delete(void *p, size_t size) PERFTOOLS_NOTHROW
+void operator delete(void *p, size_t size) CPP_NOTHROW
__attribute__((ifunc("resolve_delete_sized")));
-void operator delete[](void *p, size_t size) PERFTOOLS_NOTHROW
+void operator delete[](void *p, size_t size) CPP_NOTHROW
__attribute__((ifunc("resolve_deletearray_sized")));
#else /* !ENABLE_SIZED_DELETE && !ENABLE_DYN_SIZED_DELETE */
-void operator delete(void *p, size_t size) PERFTOOLS_NOTHROW
+void operator delete(void *p, size_t size) CPP_NOTHROW
ALIAS(tc_delete);
-void operator delete[](void *p, size_t size) PERFTOOLS_NOTHROW
+void operator delete[](void *p, size_t size) CPP_NOTHROW
ALIAS(tc_deletearray);
#endif /* !ENABLE_SIZED_DELETE && !ENABLE_DYN_SIZED_DELETE */
#if defined(ENABLE_ALIGNED_NEW_DELETE)
-void* operator new(size_t size, std::align_val_t al) PERFTOOLS_THROW(std::bad_alloc)
+void* operator new(size_t size, std::align_val_t al)
ALIAS(tc_new_aligned);
-void operator delete(void* p, std::align_val_t al) PERFTOOLS_NOTHROW
+void operator delete(void* p, std::align_val_t al) CPP_NOTHROW
ALIAS(tc_delete_aligned);
-void* operator new[](size_t size, std::align_val_t al) PERFTOOLS_THROW(std::bad_alloc)
+void* operator new[](size_t size, std::align_val_t al)
ALIAS(tc_newarray_aligned);
-void operator delete[](void* p, std::align_val_t al) PERFTOOLS_NOTHROW
+void operator delete[](void* p, std::align_val_t al) CPP_NOTHROW
ALIAS(tc_deletearray_aligned);
-void* operator new(size_t size, std::align_val_t al, const std::nothrow_t& nt) PERFTOOLS_NOTHROW
+void* operator new(size_t size, std::align_val_t al, const std::nothrow_t& nt) CPP_NOTHROW
ALIAS(tc_new_aligned_nothrow);
-void* operator new[](size_t size, std::align_val_t al, const std::nothrow_t& nt) PERFTOOLS_NOTHROW
+void* operator new[](size_t size, std::align_val_t al, const std::nothrow_t& nt) CPP_NOTHROW
ALIAS(tc_newarray_aligned_nothrow);
-void operator delete(void* p, std::align_val_t al, const std::nothrow_t& nt) PERFTOOLS_NOTHROW
+void operator delete(void* p, std::align_val_t al, const std::nothrow_t& nt) CPP_NOTHROW
ALIAS(tc_delete_aligned_nothrow);
-void operator delete[](void* p, std::align_val_t al, const std::nothrow_t& nt) PERFTOOLS_NOTHROW
+void operator delete[](void* p, std::align_val_t al, const std::nothrow_t& nt) CPP_NOTHROW
ALIAS(tc_deletearray_aligned_nothrow);
#if defined(ENABLE_SIZED_DELETE)
-void operator delete(void *p, size_t size, std::align_val_t al) PERFTOOLS_NOTHROW
+void operator delete(void *p, size_t size, std::align_val_t al) CPP_NOTHROW
ALIAS(tc_delete_sized_aligned);
-void operator delete[](void *p, size_t size, std::align_val_t al) PERFTOOLS_NOTHROW
+void operator delete[](void *p, size_t size, std::align_val_t al) CPP_NOTHROW
ALIAS(tc_deletearray_sized_aligned);
#else /* defined(ENABLE_SIZED_DELETE) */
@@ -167,11 +163,11 @@ void operator delete[](void *p, size_t size, std::align_val_t al) PERFTOOLS_NOTH
#if defined(ENABLE_DYNAMIC_SIZED_DELETE) && \
(__GNUC__ * 100 + __GNUC_MINOR__) >= 405
-static void delegate_sized_aligned_delete(void *p, size_t s, std::align_val_t al) PERFTOOLS_NOTHROW {
+static void delegate_sized_aligned_delete(void *p, size_t s, std::align_val_t al) {
(operator delete)(p, al);
}
-static void delegate_sized_aligned_deletearray(void *p, size_t s, std::align_val_t al) PERFTOOLS_NOTHROW {
+static void delegate_sized_aligned_deletearray(void *p, size_t s, std::align_val_t al) {
(operator delete[])(p, al);
}
@@ -193,16 +189,16 @@ static void *resolve_deletearray_sized_aligned(void) {
}
-void operator delete(void *p, size_t size, std::align_val_t al) PERFTOOLS_NOTHROW
+void operator delete(void *p, size_t size, std::align_val_t al) CPP_NOTHROW
__attribute__((ifunc("resolve_delete_sized_aligned")));
-void operator delete[](void *p, size_t size, std::align_val_t al) PERFTOOLS_NOTHROW
+void operator delete[](void *p, size_t size, std::align_val_t al) CPP_NOTHROW
__attribute__((ifunc("resolve_deletearray_sized_aligned")));
#else /* defined(ENABLE_DYN_SIZED_DELETE) */
-void operator delete(void *p, size_t size, std::align_val_t al) PERFTOOLS_NOTHROW
+void operator delete(void *p, size_t size, std::align_val_t al) CPP_NOTHROW
ALIAS(tc_delete);
-void operator delete[](void *p, size_t size, std::align_val_t al) PERFTOOLS_NOTHROW
+void operator delete[](void *p, size_t size, std::align_val_t al) CPP_NOTHROW
ALIAS(tc_deletearray);
#endif /* defined(ENABLE_DYN_SIZED_DELETE) */
diff --git a/src/libc_override_redefine.h b/src/libc_override_redefine.h
index c7ae885..4d61b25 100644
--- a/src/libc_override_redefine.h
+++ b/src/libc_override_redefine.h
@@ -43,25 +43,25 @@
#define TCMALLOC_LIBC_OVERRIDE_REDEFINE_H_
void* operator new(size_t size) { return tc_new(size); }
-void operator delete(void* p) PERFTOOLS_NOTHROW { tc_delete(p); }
+void operator delete(void* p) CPP_NOTHROW { tc_delete(p); }
void* operator new[](size_t size) { return tc_newarray(size); }
-void operator delete[](void* p) PERFTOOLS_NOTHROW { tc_deletearray(p); }
-void* operator new(size_t size, const std::nothrow_t& nt) PERFTOOLS_NOTHROW {
+void operator delete[](void* p) CPP_NOTHROW { tc_deletearray(p); }
+void* operator new(size_t size, const std::nothrow_t& nt) CPP_NOTHROW {
return tc_new_nothrow(size, nt);
}
-void* operator new[](size_t size, const std::nothrow_t& nt) PERFTOOLS_NOTHROW {
+void* operator new[](size_t size, const std::nothrow_t& nt) CPP_NOTHROW {
return tc_newarray_nothrow(size, nt);
}
-void operator delete(void* ptr, const std::nothrow_t& nt) PERFTOOLS_NOTHROW {
+void operator delete(void* ptr, const std::nothrow_t& nt) CPP_NOTHROW {
return tc_delete_nothrow(ptr, nt);
}
-void operator delete[](void* ptr, const std::nothrow_t& nt) PERFTOOLS_NOTHROW {
+void operator delete[](void* ptr, const std::nothrow_t& nt) CPP_NOTHROW {
return tc_deletearray_nothrow(ptr, nt);
}
#ifdef ENABLE_SIZED_DELETE
-void operator delete(void* p, size_t s) PERFTOOLS_NOTHROW { tc_delete_sized(p, s); }
-void operator delete[](void* p, size_t s) PERFTOOLS_NOTHROW{ tc_deletearray_sized(p, s); }
+void operator delete(void* p, size_t s) CPP_NOTHROW { tc_delete_sized(p, s); }
+void operator delete[](void* p, size_t s) CPP_NOTHROW{ tc_deletearray_sized(p, s);}
#endif
#if defined(ENABLE_ALIGNED_NEW_DELETE)
@@ -69,33 +69,33 @@ void operator delete[](void* p, size_t s) PERFTOOLS_NOTHROW{ tc_deletearray_size
void* operator new(size_t size, std::align_val_t al) {
return tc_new_aligned(size, al);
}
-void operator delete(void* p, std::align_val_t al) PERFTOOLS_NOTHROW {
+void operator delete(void* p, std::align_val_t al) CPP_NOTHROW {
tc_delete_aligned(p, al);
}
void* operator new[](size_t size, std::align_val_t al) {
return tc_newarray_aligned(size, al);
}
-void operator delete[](void* p, std::align_val_t al) PERFTOOLS_NOTHROW {
+void operator delete[](void* p, std::align_val_t al) CPP_NOTHROW {
tc_deletearray_aligned(p, al);
}
-void* operator new(size_t size, std::align_val_t al, const std::nothrow_t& nt) PERFTOOLS_NOTHROW {
+void* operator new(size_t size, std::align_val_t al, const std::nothrow_t& nt) CPP_NOTHROW {
return tc_new_aligned_nothrow(size, al, nt);
}
-void* operator new[](size_t size, std::align_val_t al, const std::nothrow_t& nt) PERFTOOLS_NOTHROW {
+void* operator new[](size_t size, std::align_val_t al, const std::nothrow_t& nt) CPP_NOTHROW {
return tc_newarray_aligned_nothrow(size, al, nt);
}
-void operator delete(void* ptr, std::align_val_t al, const std::nothrow_t& nt) PERFTOOLS_NOTHROW {
+void operator delete(void* ptr, std::align_val_t al, const std::nothrow_t& nt) CPP_NOTHROW {
return tc_delete_aligned_nothrow(ptr, al, nt);
}
-void operator delete[](void* ptr, std::align_val_t al, const std::nothrow_t& nt) PERFTOOLS_NOTHROW {
+void operator delete[](void* ptr, std::align_val_t al, const std::nothrow_t& nt) CPP_NOTHROW {
return tc_deletearray_aligned_nothrow(ptr, al, nt);
}
#ifdef ENABLE_SIZED_DELETE
-void operator delete(void* p, size_t s, std::align_val_t al) PERFTOOLS_NOTHROW {
+void operator delete(void* p, size_t s, std::align_val_t al) CPP_NOTHROW {
tc_delete_sized_aligned(p, s, al);
}
-void operator delete[](void* p, size_t s, std::align_val_t al) PERFTOOLS_NOTHROW {
+void operator delete[](void* p, size_t s, std::align_val_t al) CPP_NOTHROW {
tc_deletearray_sized_aligned(p, s, al);
}
#endif
diff --git a/src/tests/tcmalloc_unittest.cc b/src/tests/tcmalloc_unittest.cc
index 1f362f6..25b2e41 100644
--- a/src/tests/tcmalloc_unittest.cc
+++ b/src/tests/tcmalloc_unittest.cc
@@ -679,7 +679,7 @@ static void TestRealloc() {
#endif
}
-static void TestNewHandler() PERFTOOLS_THROW(std::bad_alloc) {
+static void TestNewHandler() {
++news_handled;
throw std::bad_alloc();
}
diff --git a/src/windows/get_mangled_names.cc b/src/windows/get_mangled_names.cc
index 30ac20e..08bd03b 100644
--- a/src/windows/get_mangled_names.cc
+++ b/src/windows/get_mangled_names.cc
@@ -55,11 +55,11 @@
static char m; // some dummy memory so new doesn't return NULL.
void* operator new(size_t size) { return &m; }
-void operator delete(void* p) PERFTOOLS_NOTHROW { }
+void operator delete(void* p) throw() { }
void* operator new[](size_t size) { return &m; }
-void operator delete[](void* p) PERFTOOLS_NOTHROW { }
+void operator delete[](void* p) throw() { }
-void* operator new(size_t size, const std::nothrow_t&) PERFTOOLS_NOTHROW { return &m; }
-void operator delete(void* p, const std::nothrow_t&) PERFTOOLS_NOTHROW { }
-void* operator new[](size_t size, const std::nothrow_t&) PERFTOOLS_NOTHROW { return &m; }
-void operator delete[](void* p, const std::nothrow_t&) PERFTOOLS_NOTHROW { }
+void* operator new(size_t size, const std::nothrow_t&) throw() { return &m; }
+void operator delete(void* p, const std::nothrow_t&) throw() { }
+void* operator new[](size_t size, const std::nothrow_t&) throw() { return &m; }
+void operator delete[](void* p, const std::nothrow_t&) throw() { }