build sized delete aliases even when sized-delete is disabled
In this case we alias to regular delete. This is helpful because if we don't override sized delete, then apps will call version in libstdc++ which delegates calls to regular delete, which is slower than calling regular delete directly.
This commit is contained in:
parent
06811b3ae4
commit
782165fa7f
21
configure.ac
21
configure.ac
|
@ -351,17 +351,16 @@ AS_IF([test "x$enable_sized_delete" = xyes],
|
|||
[AC_MSG_NOTICE([Will build dynamically detected sized deallocation operators])],
|
||||
[AC_MSG_NOTICE([Will not build sized deallocation operators])])])
|
||||
|
||||
AS_IF([test "x$enable_sized_delete" = xyes -o "x$enable_dyn_sized_delete" = xyes],
|
||||
[AC_CACHE_CHECK([if C++ compiler supports -fsized-deallocation],
|
||||
perftools_cv_sized_deallocation_result,
|
||||
[AC_LANG_PUSH(C++)
|
||||
OLD_CXXFLAGS="$CXXFLAGS"
|
||||
CXXFLAGS="$CXXFLAGS -fsized-deallocation"
|
||||
AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,)],
|
||||
perftools_cv_sized_deallocation_result=yes,
|
||||
perftools_cv_sized_deallocation_result=no)
|
||||
CXXFLAGS="$OLD_CXXFLAGS"
|
||||
AC_LANG_POP(C++)])])
|
||||
AC_CACHE_CHECK([if C++ compiler supports -fsized-deallocation],
|
||||
[perftools_cv_sized_deallocation_result],
|
||||
[AC_LANG_PUSH(C++)
|
||||
OLD_CXXFLAGS="$CXXFLAGS"
|
||||
CXXFLAGS="$CXXFLAGS -fsized-deallocation"
|
||||
AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,)],
|
||||
perftools_cv_sized_deallocation_result=yes,
|
||||
perftools_cv_sized_deallocation_result=no)
|
||||
CXXFLAGS="$OLD_CXXFLAGS"
|
||||
AC_LANG_POP(C++)])
|
||||
|
||||
AM_CONDITIONAL(HAVE_SIZED_DEALLOCATION,
|
||||
test "$perftools_cv_sized_deallocation_result" = yes)
|
||||
|
|
|
@ -127,6 +127,13 @@ void operator delete(void *p, size_t size) throw()
|
|||
void operator delete[](void *p, size_t size) throw()
|
||||
__attribute__((ifunc("resolve_deletearray_sized")));
|
||||
|
||||
#else /* !ENABLE_SIZED_DELETE && !ENABLE_DYN_SIZED_DELETE */
|
||||
|
||||
void operator delete(void *p, size_t size) throw()
|
||||
ALIAS(tc_delete);
|
||||
void operator delete[](void *p, size_t size) throw()
|
||||
ALIAS(tc_deletearray);
|
||||
|
||||
#endif /* !ENABLE_SIZED_DELETE && !ENABLE_DYN_SIZED_DELETE */
|
||||
|
||||
extern "C" {
|
||||
|
|
Loading…
Reference in New Issue