summaryrefslogtreecommitdiff
path: root/gc_cpp.cc
diff options
context:
space:
mode:
authorIvan Maidanski <ivmai@mail.ru>2019-11-04 10:47:45 +0300
committerIvan Maidanski <ivmai@mail.ru>2019-11-04 10:47:45 +0300
commit803f7ed4bb05d8f79114e0e5f148e70c0a9dd3c7 (patch)
treec19371c667a4eac66f6d8359a16829eed789c478 /gc_cpp.cc
parentc85518128830826f5329d8ea470bd564db578f56 (diff)
downloadbdwgc-803f7ed4bb05d8f79114e0e5f148e70c0a9dd3c7.tar.gz
Move GC_throw_bad_alloc definition to new C++ file
Issue #268 (bdgwc). * CMakeLists.txt [enable_cplusplus] (gccpp): Add gc_badalc.cc library source file. * Makefile.am [CPLUSPLUS] (libgccpp_la_SOURCES): Likewise. * Makefile.am (EXTRA_DIST): Add gc_badalc.cpp. * Makefile.direct (SRCS): Add gc_badalc.cc. * Makefile.direct (gc_badalc.o): New target. * NT_MAKEFILE (gc_badalc.obj): Likewise. * WCC_MAKEFILE (gc_badalc.obj): Likewise. * digimars.mak (gc_badalc.obj): Likewise. * build/s60v3/libgc.mmp (SOURCE): Mention gc_badalc.cpp (commented out). * Makefile.direct (c++): Add dependency on gc_badalc.o; pass gc_badalc.o to ru tool. * NT_MAKEFILE (gccpp.lib): Add dependency on gc_badalc.obj; pass gc_badalc.obj to lib or link tool. * WCC_MAKEFILE (gccpp.lib, gccpp.dll): Likewise. * digimars.mak (OBJS): Add gc_badalc.obj. * doc/README.Mac (Files to build the GC libraries): Add gc_badalc.cc. * doc/gcinterface.md (C++ Interface): Mention gc_badalc.cc file. * gc_badalc.cc: New file. * gc_badalc.cpp: Likewise. * gc_cpp.cc (GC_throw_bad_alloc): Move to gc_badalc.cc. * gc_cpp.cc (GC_ALLOCATOR_THROW_OR_ABORT): Add comment; do not define unless GC_NO_INLINE_STD_NEW, or not _MSC_VER and not __DMC__. * tests/tests.am [CPLUSPLUS && AVOID_CPP_LIB] (test_cpp_LDADD): Add gc_badalc.o.
Diffstat (limited to 'gc_cpp.cc')
-rw-r--r--gc_cpp.cc9
1 files changed, 3 insertions, 6 deletions
diff --git a/gc_cpp.cc b/gc_cpp.cc
index 300b24e8..cbcaf4cd 100644
--- a/gc_cpp.cc
+++ b/gc_cpp.cc
@@ -34,18 +34,15 @@ built-in "new" and "delete".
#include "gc_cpp.h" // for GC_OPERATOR_NEW_ARRAY, GC_NOEXCEPT
+#if !(defined(_MSC_VER) || defined(__DMC__)) || defined(GC_NO_INLINE_STD_NEW)
+
#if defined(GC_NEW_ABORTS_ON_OOM) || defined(_LIBCPP_NO_EXCEPTIONS)
# define GC_ALLOCATOR_THROW_OR_ABORT() GC_abort_on_oom()
#else
+// Use bad_alloc() directly instead of GC_throw_bad_alloc() call.
# define GC_ALLOCATOR_THROW_OR_ABORT() throw std::bad_alloc()
#endif
-GC_API void GC_CALL GC_throw_bad_alloc() {
- GC_ALLOCATOR_THROW_OR_ABORT();
-}
-
-#if !(defined(_MSC_VER) || defined(__DMC__)) || defined(GC_NO_INLINE_STD_NEW)
-
# if !defined(GC_NEW_DELETE_THROW_NOT_NEEDED) \
&& !defined(GC_NEW_DELETE_NEED_THROW) && GC_GNUC_PREREQ(4, 2) \
&& (__cplusplus < 201103L || defined(__clang__))