2013-12-06 13:43:46 +08:00
|
|
|
/*
|
|
|
|
* JEMALLOC_ALWAYS_INLINE is used within header files for functions that are
|
|
|
|
* static inline functions if inlining is enabled, and single-definition
|
|
|
|
* library-private functions if inlining is disabled.
|
|
|
|
*
|
|
|
|
* JEMALLOC_ALWAYS_INLINE_C is for use in .c files, in which case the denoted
|
|
|
|
* functions are always static, regardless of whether inlining is enabled.
|
|
|
|
*/
|
2013-12-07 10:27:33 +08:00
|
|
|
#if defined(JEMALLOC_DEBUG) || defined(JEMALLOC_CODE_COVERAGE)
|
|
|
|
/* Disable inlining to make debugging/profiling easier. */
|
2013-12-06 13:43:46 +08:00
|
|
|
# define JEMALLOC_ALWAYS_INLINE
|
|
|
|
# define JEMALLOC_ALWAYS_INLINE_C static
|
|
|
|
# define JEMALLOC_INLINE
|
|
|
|
# define inline
|
|
|
|
#else
|
|
|
|
# define JEMALLOC_ENABLE_INLINE
|
|
|
|
# ifdef JEMALLOC_HAVE_ATTR
|
|
|
|
# define JEMALLOC_ALWAYS_INLINE \
|
|
|
|
static inline JEMALLOC_ATTR(unused) JEMALLOC_ATTR(always_inline)
|
|
|
|
# define JEMALLOC_ALWAYS_INLINE_C \
|
|
|
|
static inline JEMALLOC_ATTR(always_inline)
|
|
|
|
# else
|
|
|
|
# define JEMALLOC_ALWAYS_INLINE static inline
|
|
|
|
# define JEMALLOC_ALWAYS_INLINE_C static inline
|
|
|
|
# endif
|
|
|
|
# define JEMALLOC_INLINE static inline
|
|
|
|
# ifdef _MSC_VER
|
|
|
|
# define inline _inline
|
|
|
|
# endif
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#ifdef JEMALLOC_CC_SILENCE
|
|
|
|
#define UNUSED JEMALLOC_ATTR(unused)
|
|
|
|
#else
|
|
|
|
#define UNUSED
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#define ZU(z) ((size_t)z)
|
|
|
|
#define QU(q) ((uint64_t)q)
|
2013-12-10 15:36:37 +08:00
|
|
|
#define QI(q) ((int64_t)q)
|
2013-12-06 13:43:46 +08:00
|
|
|
|
|
|
|
#ifndef __DECONST
|
|
|
|
# define __DECONST(type, var) ((type)(uintptr_t)(const void *)(var))
|
|
|
|
#endif
|
|
|
|
|