jemalloc_internal_macros.h revision 99b0fbbe6975bf2af1387f75d961ad84fb108276
12a4a095e5788be7967c0ac311efc269bc87e80b3Chris Lattner/*
26fbcc26f1460eaee4e0eb8b426fc1ff0c7af11beJohn Criswell * JEMALLOC_ALWAYS_INLINE and JEMALLOC_INLINE are used within header files for
36fbcc26f1460eaee4e0eb8b426fc1ff0c7af11beJohn Criswell * functions that are static inline functions if inlining is enabled, and
46fbcc26f1460eaee4e0eb8b426fc1ff0c7af11beJohn Criswell * single-definition library-private functions if inlining is disabled.
56fbcc26f1460eaee4e0eb8b426fc1ff0c7af11beJohn Criswell *
66fbcc26f1460eaee4e0eb8b426fc1ff0c7af11beJohn Criswell * JEMALLOC_ALWAYS_INLINE_C and JEMALLOC_INLINE_C are for use in .c files, in
76fbcc26f1460eaee4e0eb8b426fc1ff0c7af11beJohn Criswell * which case the denoted functions are always static, regardless of whether
86fbcc26f1460eaee4e0eb8b426fc1ff0c7af11beJohn Criswell * inlining is enabled.
92a4a095e5788be7967c0ac311efc269bc87e80b3Chris Lattner */
102a4a095e5788be7967c0ac311efc269bc87e80b3Chris Lattner#if defined(JEMALLOC_DEBUG) || defined(JEMALLOC_CODE_COVERAGE)
112a4a095e5788be7967c0ac311efc269bc87e80b3Chris Lattner   /* Disable inlining to make debugging/profiling easier. */
122a4a095e5788be7967c0ac311efc269bc87e80b3Chris Lattner#  define JEMALLOC_ALWAYS_INLINE
132a4a095e5788be7967c0ac311efc269bc87e80b3Chris Lattner#  define JEMALLOC_ALWAYS_INLINE_C static
142a4a095e5788be7967c0ac311efc269bc87e80b3Chris Lattner#  define JEMALLOC_INLINE
152a4a095e5788be7967c0ac311efc269bc87e80b3Chris Lattner#  define JEMALLOC_INLINE_C static
162a4a095e5788be7967c0ac311efc269bc87e80b3Chris Lattner#  define inline
172a4a095e5788be7967c0ac311efc269bc87e80b3Chris Lattner#else
182a4a095e5788be7967c0ac311efc269bc87e80b3Chris Lattner#  define JEMALLOC_ENABLE_INLINE
192a4a095e5788be7967c0ac311efc269bc87e80b3Chris Lattner#  ifdef JEMALLOC_HAVE_ATTR
202a4a095e5788be7967c0ac311efc269bc87e80b3Chris Lattner#    define JEMALLOC_ALWAYS_INLINE \
212a4a095e5788be7967c0ac311efc269bc87e80b3Chris Lattner	 static inline JEMALLOC_ATTR(unused) JEMALLOC_ATTR(always_inline)
222a4a095e5788be7967c0ac311efc269bc87e80b3Chris Lattner#    define JEMALLOC_ALWAYS_INLINE_C \
232a4a095e5788be7967c0ac311efc269bc87e80b3Chris Lattner	 static inline JEMALLOC_ATTR(always_inline)
242a4a095e5788be7967c0ac311efc269bc87e80b3Chris Lattner#  else
25d0fde30ce850b78371fd1386338350591f9ff494Brian Gaeke#    define JEMALLOC_ALWAYS_INLINE static inline
26d0fde30ce850b78371fd1386338350591f9ff494Brian Gaeke#    define JEMALLOC_ALWAYS_INLINE_C static inline
272a4a095e5788be7967c0ac311efc269bc87e80b3Chris Lattner#  endif
282a4a095e5788be7967c0ac311efc269bc87e80b3Chris Lattner#  define JEMALLOC_INLINE static inline
292a4a095e5788be7967c0ac311efc269bc87e80b3Chris Lattner#  define JEMALLOC_INLINE_C static inline
302a4a095e5788be7967c0ac311efc269bc87e80b3Chris Lattner#  ifdef _MSC_VER
312a4a095e5788be7967c0ac311efc269bc87e80b3Chris Lattner#    define inline _inline
322a4a095e5788be7967c0ac311efc269bc87e80b3Chris Lattner#  endif
332a4a095e5788be7967c0ac311efc269bc87e80b3Chris Lattner#endif
342a4a095e5788be7967c0ac311efc269bc87e80b3Chris Lattner
352a4a095e5788be7967c0ac311efc269bc87e80b3Chris Lattner#ifdef JEMALLOC_CC_SILENCE
362a4a095e5788be7967c0ac311efc269bc87e80b3Chris Lattner#  define UNUSED JEMALLOC_ATTR(unused)
372a4a095e5788be7967c0ac311efc269bc87e80b3Chris Lattner#else
382a4a095e5788be7967c0ac311efc269bc87e80b3Chris Lattner#  define UNUSED
392a4a095e5788be7967c0ac311efc269bc87e80b3Chris Lattner#endif
402a4a095e5788be7967c0ac311efc269bc87e80b3Chris Lattner
412a4a095e5788be7967c0ac311efc269bc87e80b3Chris Lattner#define	ZU(z)	((size_t)z)
42d0fde30ce850b78371fd1386338350591f9ff494Brian Gaeke#define	QU(q)	((uint64_t)q)
43d0fde30ce850b78371fd1386338350591f9ff494Brian Gaeke#define	QI(q)	((int64_t)q)
442a4a095e5788be7967c0ac311efc269bc87e80b3Chris Lattner
45#ifndef __DECONST
46#  define	__DECONST(type, var)	((type)(uintptr_t)(const void *)(var))
47#endif
48
49#ifndef JEMALLOC_HAS_RESTRICT
50#  define restrict
51#endif
52