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