1#ifndef JEMALLOC_INTERNAL_MACROS_H
2#define JEMALLOC_INTERNAL_MACROS_H
3
4#ifdef JEMALLOC_DEBUG
5#  define JEMALLOC_ALWAYS_INLINE static inline
6#else
7#  define JEMALLOC_ALWAYS_INLINE JEMALLOC_ATTR(always_inline) static inline
8#endif
9#ifdef _MSC_VER
10#  define inline _inline
11#endif
12
13#define UNUSED JEMALLOC_ATTR(unused)
14
15#define ZU(z)	((size_t)z)
16#define ZD(z)	((ssize_t)z)
17#define QU(q)	((uint64_t)q)
18#define QD(q)	((int64_t)q)
19
20#define KZU(z)	ZU(z##ULL)
21#define KZD(z)	ZD(z##LL)
22#define KQU(q)	QU(q##ULL)
23#define KQD(q)	QI(q##LL)
24
25#ifndef __DECONST
26#  define	__DECONST(type, var)	((type)(uintptr_t)(const void *)(var))
27#endif
28
29#if !defined(JEMALLOC_HAS_RESTRICT) || defined(__cplusplus)
30#  define restrict
31#endif
32
33/* Various function pointers are statick and immutable except during testing. */
34#ifdef JEMALLOC_JET
35#  define JET_MUTABLE
36#else
37#  define JET_MUTABLE const
38#endif
39
40#define JEMALLOC_VA_ARGS_HEAD(head, ...) head
41#define JEMALLOC_VA_ARGS_TAIL(head, ...) __VA_ARGS__
42
43#endif /* JEMALLOC_INTERNAL_MACROS_H */
44