summaryrefslogtreecommitdiffstats
path: root/include/jemalloc/jemalloc_macros.h.in
blob: 13dbdd91209a46cf5a845a4182ec362557efa3c1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#include <limits.h>
#include <strings.h>

#define	JEMALLOC_VERSION "@jemalloc_version@"
#define	JEMALLOC_VERSION_MAJOR @jemalloc_version_major@
#define	JEMALLOC_VERSION_MINOR @jemalloc_version_minor@
#define	JEMALLOC_VERSION_BUGFIX @jemalloc_version_bugfix@
#define	JEMALLOC_VERSION_NREV @jemalloc_version_nrev@
#define	JEMALLOC_VERSION_GID "@jemalloc_version_gid@"

#  define MALLOCX_LG_ALIGN(la)	(la)
#  if LG_SIZEOF_PTR == 2
#    define MALLOCX_ALIGN(a)	(ffs(a)-1)
#  else
#    define MALLOCX_ALIGN(a)						\
	 ((a < (size_t)INT_MAX) ? ffs(a)-1 : ffs(a>>32)+31)
#  endif
#  define MALLOCX_ZERO	((int)0x40)
/* Bias arena index bits so that 0 encodes "MALLOCX_ARENA() unspecified". */
#  define MALLOCX_ARENA(a)	((int)(((a)+1) << 8))

#ifdef JEMALLOC_EXPERIMENTAL
#  define ALLOCM_LG_ALIGN(la)	(la)
#  if LG_SIZEOF_PTR == 2
#    define ALLOCM_ALIGN(a)	(ffs(a)-1)
#  else
#    define ALLOCM_ALIGN(a)						\
	 ((a < (size_t)INT_MAX) ? ffs(a)-1 : ffs(a>>32)+31)
#  endif
#  define ALLOCM_ZERO	((int)0x40)
#  define ALLOCM_NO_MOVE	((int)0x80)
/* Bias arena index bits so that 0 encodes "ALLOCM_ARENA() unspecified". */
#  define ALLOCM_ARENA(a)	((int)(((a)+1) << 8))
#  define ALLOCM_SUCCESS	0
#  define ALLOCM_ERR_OOM	1
#  define ALLOCM_ERR_NOT_MOVED	2
#endif

#ifdef JEMALLOC_HAVE_ATTR
#  define JEMALLOC_ATTR(s) __attribute__((s))
#  define JEMALLOC_EXPORT JEMALLOC_ATTR(visibility("default"))
#  define JEMALLOC_ALIGNED(s) JEMALLOC_ATTR(aligned(s))
#  define JEMALLOC_SECTION(s) JEMALLOC_ATTR(section(s))
#  define JEMALLOC_NOINLINE JEMALLOC_ATTR(noinline)
#elif _MSC_VER
#  define JEMALLOC_ATTR(s)
#  ifdef DLLEXPORT
#    define JEMALLOC_EXPORT __declspec(dllexport)
#  else
#    define JEMALLOC_EXPORT __declspec(dllimport)
#  endif
#  define JEMALLOC_ALIGNED(s) __declspec(align(s))
#  define JEMALLOC_SECTION(s) __declspec(allocate(s))
#  define JEMALLOC_NOINLINE __declspec(noinline)
#else
#  define JEMALLOC_ATTR(s)
#  define JEMALLOC_EXPORT
#  define JEMALLOC_ALIGNED(s)
#  define JEMALLOC_SECTION(s)
#  define JEMALLOC_NOINLINE
#endif