2017-01-11 10:06:31 +08:00
|
|
|
#ifndef JEMALLOC_INTERNAL_MACROS_H
|
|
|
|
#define JEMALLOC_INTERNAL_MACROS_H
|
|
|
|
|
2017-04-25 06:22:03 +08:00
|
|
|
#ifdef JEMALLOC_DEBUG
|
2017-04-22 00:37:34 +08:00
|
|
|
# define JEMALLOC_ALWAYS_INLINE static inline
|
2013-12-06 13:43:46 +08:00
|
|
|
#else
|
2017-04-22 00:37:34 +08:00
|
|
|
# define JEMALLOC_ALWAYS_INLINE JEMALLOC_ATTR(always_inline) static inline
|
|
|
|
#endif
|
|
|
|
#ifdef _MSC_VER
|
|
|
|
# define inline _inline
|
2013-12-06 13:43:46 +08:00
|
|
|
#endif
|
|
|
|
|
2017-04-25 02:47:10 +08:00
|
|
|
#define UNUSED JEMALLOC_ATTR(unused)
|
2013-12-06 13:43:46 +08:00
|
|
|
|
2017-01-20 13:41:41 +08:00
|
|
|
#define ZU(z) ((size_t)z)
|
2017-03-07 03:40:29 +08:00
|
|
|
#define ZD(z) ((ssize_t)z)
|
2017-01-20 13:41:41 +08:00
|
|
|
#define QU(q) ((uint64_t)q)
|
2017-03-07 03:40:29 +08:00
|
|
|
#define QD(q) ((int64_t)q)
|
2013-12-06 13:43:46 +08:00
|
|
|
|
2017-01-20 13:41:41 +08:00
|
|
|
#define KZU(z) ZU(z##ULL)
|
2017-03-07 03:40:29 +08:00
|
|
|
#define KZD(z) ZD(z##LL)
|
2017-01-20 13:41:41 +08:00
|
|
|
#define KQU(q) QU(q##ULL)
|
2017-03-07 03:40:29 +08:00
|
|
|
#define KQD(q) QI(q##LL)
|
2014-05-29 07:11:55 +08:00
|
|
|
|
2013-12-06 13:43:46 +08:00
|
|
|
#ifndef __DECONST
|
|
|
|
# define __DECONST(type, var) ((type)(uintptr_t)(const void *)(var))
|
|
|
|
#endif
|
2014-02-25 08:08:38 +08:00
|
|
|
|
jemalloc cpp new/delete bindings
Adds cpp bindings for jemalloc, along with necessary autoconf settings.
This is mostly to add sized deallocation support, which can't be added
from C directly. Sized deallocation is ~10% microbench improvement.
* Import ax_cxx_compile_stdcxx.m4 from the autoconf repo, seems like the
easiest way to get c++14 detection.
* Adds various other changes, like CXXFLAGS, to configure.ac.
* Adds new rules to Makefile.in for src/jemalloc-cpp.cpp, and a basic
unittest.
* Both new and delete are overridden, to ensure jemalloc is used for
both.
* TODO future enhancement of avoiding extra PLT thunks for new and
delete - sdallocx and malloc are publicly exported jemalloc symbols,
using an alias would link them directly. Unfortunately, was having
trouble getting it to play nice with jemalloc's namespace support.
Testing:
Tested gcc 4.8, gcc 5, gcc 5.2, clang 4.0. Only gcc >= 5 has sized
deallocation support, verified that the rest build correctly.
Tested mac osx and Centos.
Tested --with-jemalloc-prefix and --without-export.
This resolves #202.
2016-10-24 06:56:30 +08:00
|
|
|
#if !defined(JEMALLOC_HAS_RESTRICT) || defined(__cplusplus)
|
2014-02-25 08:08:38 +08:00
|
|
|
# define restrict
|
|
|
|
#endif
|
2017-01-11 10:06:31 +08:00
|
|
|
|
|
|
|
#endif /* JEMALLOC_INTERNAL_MACROS_H */
|