1261071Sjasone/*
2261071Sjasone * JEMALLOC_ALWAYS_INLINE and JEMALLOC_INLINE are used within header files for
3261071Sjasone * functions that are static inline functions if inlining is enabled, and
4261071Sjasone * single-definition library-private functions if inlining is disabled.
5261071Sjasone *
6261071Sjasone * JEMALLOC_ALWAYS_INLINE_C and JEMALLOC_INLINE_C are for use in .c files, in
7261071Sjasone * which case the denoted functions are always static, regardless of whether
8261071Sjasone * inlining is enabled.
9261071Sjasone */
10261071Sjasone#if defined(JEMALLOC_DEBUG) || defined(JEMALLOC_CODE_COVERAGE)
11261071Sjasone   /* Disable inlining to make debugging/profiling easier. */
12261071Sjasone#  define JEMALLOC_ALWAYS_INLINE
13261071Sjasone#  define JEMALLOC_ALWAYS_INLINE_C static
14261071Sjasone#  define JEMALLOC_INLINE
15261071Sjasone#  define JEMALLOC_INLINE_C static
16261071Sjasone#  define inline
17261071Sjasone#else
18261071Sjasone#  define JEMALLOC_ENABLE_INLINE
19261071Sjasone#  ifdef JEMALLOC_HAVE_ATTR
20261071Sjasone#    define JEMALLOC_ALWAYS_INLINE \
21261071Sjasone	 static inline JEMALLOC_ATTR(unused) JEMALLOC_ATTR(always_inline)
22261071Sjasone#    define JEMALLOC_ALWAYS_INLINE_C \
23261071Sjasone	 static inline JEMALLOC_ATTR(always_inline)
24261071Sjasone#  else
25261071Sjasone#    define JEMALLOC_ALWAYS_INLINE static inline
26261071Sjasone#    define JEMALLOC_ALWAYS_INLINE_C static inline
27261071Sjasone#  endif
28261071Sjasone#  define JEMALLOC_INLINE static inline
29261071Sjasone#  define JEMALLOC_INLINE_C static inline
30261071Sjasone#  ifdef _MSC_VER
31261071Sjasone#    define inline _inline
32261071Sjasone#  endif
33261071Sjasone#endif
34261071Sjasone
35261071Sjasone#ifdef JEMALLOC_CC_SILENCE
36261071Sjasone#  define UNUSED JEMALLOC_ATTR(unused)
37261071Sjasone#else
38261071Sjasone#  define UNUSED
39261071Sjasone#endif
40261071Sjasone
41261071Sjasone#define	ZU(z)	((size_t)z)
42286866Sjasone#define	ZI(z)	((ssize_t)z)
43261071Sjasone#define	QU(q)	((uint64_t)q)
44261071Sjasone#define	QI(q)	((int64_t)q)
45261071Sjasone
46286866Sjasone#define	KZU(z)	ZU(z##ULL)
47286866Sjasone#define	KZI(z)	ZI(z##LL)
48286866Sjasone#define	KQU(q)	QU(q##ULL)
49286866Sjasone#define	KQI(q)	QI(q##LL)
50286866Sjasone
51261071Sjasone#ifndef __DECONST
52261071Sjasone#  define	__DECONST(type, var)	((type)(uintptr_t)(const void *)(var))
53261071Sjasone#endif
54262521Sjasone
55262521Sjasone#ifndef JEMALLOC_HAS_RESTRICT
56262521Sjasone#  define restrict
57262521Sjasone#endif
58