1/* 2 * JEMALLOC_ALWAYS_INLINE and JEMALLOC_INLINE are used within header files for 3 * functions that are static inline functions if inlining is enabled, and 4 * single-definition library-private functions if inlining is disabled. 5 * 6 * JEMALLOC_ALWAYS_INLINE_C and JEMALLOC_INLINE_C are for use in .c files, in 7 * which case the denoted functions are always static, regardless of whether 8 * inlining is enabled. 9 */ 10#if defined(JEMALLOC_DEBUG) || defined(JEMALLOC_CODE_COVERAGE) 11 /* Disable inlining to make debugging/profiling easier. */ 12# define JEMALLOC_ALWAYS_INLINE 13# define JEMALLOC_ALWAYS_INLINE_C static 14# define JEMALLOC_INLINE 15# define JEMALLOC_INLINE_C static 16# define inline 17#else 18# define JEMALLOC_ENABLE_INLINE 19# ifdef JEMALLOC_HAVE_ATTR 20# define JEMALLOC_ALWAYS_INLINE \ 21 static inline JEMALLOC_ATTR(unused) JEMALLOC_ATTR(always_inline) 22# define JEMALLOC_ALWAYS_INLINE_C \ 23 static inline JEMALLOC_ATTR(always_inline) 24# else 25# define JEMALLOC_ALWAYS_INLINE static inline 26# define JEMALLOC_ALWAYS_INLINE_C static inline 27# endif 28# define JEMALLOC_INLINE static inline 29# define JEMALLOC_INLINE_C static inline 30# ifdef _MSC_VER 31# define inline _inline 32# endif 33#endif 34 35#ifdef JEMALLOC_CC_SILENCE 36# define UNUSED JEMALLOC_ATTR(unused) 37#else 38# define UNUSED 39#endif 40 41#define ZU(z) ((size_t)z) 42#define ZI(z) ((ssize_t)z) 43#define QU(q) ((uint64_t)q) 44#define QI(q) ((int64_t)q) 45 46#define KZU(z) ZU(z##ULL) 47#define KZI(z) ZI(z##LL) 48#define KQU(q) QU(q##ULL) 49#define KQI(q) QI(q##LL) 50 51#ifndef __DECONST 52# define __DECONST(type, var) ((type)(uintptr_t)(const void *)(var)) 53#endif 54 55#ifndef JEMALLOC_HAS_RESTRICT 56# define restrict 57#endif 58