2 * Override settings that were generated in jemalloc_defs.h as necessary.
5 #undef JEMALLOC_OVERRIDE_VALLOC
7 #ifndef MALLOC_PRODUCTION
12 * The following are architecture-dependent, so conditionally define them for
13 * each supported architecture.
15 #undef JEMALLOC_TLS_MODEL
16 #undef STATIC_PAGE_SHIFT
20 #undef LG_SIZEOF_INTMAX_T
23 # define LG_SIZEOF_PTR 2
24 # define JEMALLOC_TLS_MODEL __attribute__((tls_model("initial-exec")))
27 # define LG_SIZEOF_PTR 3
30 # define LG_SIZEOF_PTR 3
31 # define JEMALLOC_TLS_MODEL __attribute__((tls_model("initial-exec")))
34 # define LG_SIZEOF_PTR 3
35 # define JEMALLOC_TLS_MODEL __attribute__((tls_model("initial-exec")))
38 # define LG_SIZEOF_PTR 2
41 # define LG_SIZEOF_PTR 3
45 # define LG_SIZEOF_PTR 3
47 # define LG_SIZEOF_PTR 2
51 # define LG_SIZEOF_PTR 3
52 #elif defined(__powerpc__)
53 # define LG_SIZEOF_PTR 2
56 #ifndef JEMALLOC_TLS_MODEL
57 # define JEMALLOC_TLS_MODEL /* Default. */
60 #define STATIC_PAGE_SHIFT PAGE_SHIFT
61 #define LG_SIZEOF_INT 2
62 #define LG_SIZEOF_LONG LG_SIZEOF_PTR
63 #define LG_SIZEOF_INTMAX_T 3
66 #include <machine/cpu.h>
67 #include <machine/cpufunc.h>
68 #define CPU_SPINWAIT cpu_spinwait()
70 /* Disable lazy-lock machinery, mangle isthreaded, and adjust its type. */
71 #undef JEMALLOC_LAZY_LOCK
72 extern int __isthreaded;
73 #define isthreaded ((bool)__isthreaded)
80 #undef je_posix_memalign
81 #undef je_aligned_alloc
82 #undef je_malloc_usable_size
94 #define je_malloc __malloc
95 #define je_calloc __calloc
96 #define je_realloc __realloc
97 #define je_free __free
98 #define je_posix_memalign __posix_memalign
99 #define je_aligned_alloc __aligned_alloc
100 #define je_malloc_usable_size __malloc_usable_size
101 #define je_mallocx __mallocx
102 #define je_rallocx __rallocx
103 #define je_xallocx __xallocx
104 #define je_sallocx __sallocx
105 #define je_dallocx __dallocx
106 #define je_nallocx __nallocx
107 #define je_allocm __allocm
108 #define je_rallocm __rallocm
109 #define je_sallocm __sallocm
110 #define je_dallocm __dallocm
111 #define je_nallocm __nallocm
116 #define pthread_mutex_lock _pthread_mutex_lock
117 #define pthread_mutex_unlock _pthread_mutex_unlock
121 * Define 'weak' symbols so that an application can have its own versions
122 * of malloc, calloc, realloc, free, et al.
124 __weak_reference(__malloc, malloc);
125 __weak_reference(__calloc, calloc);
126 __weak_reference(__realloc, realloc);
127 __weak_reference(__free, free);
128 __weak_reference(__posix_memalign, posix_memalign);
129 __weak_reference(__aligned_alloc, aligned_alloc);
130 __weak_reference(__malloc_usable_size, malloc_usable_size);
131 __weak_reference(__mallocx, mallocx);
132 __weak_reference(__rallocx, rallocx);
133 __weak_reference(__xallocx, xallocx);
134 __weak_reference(__sallocx, sallocx);
135 __weak_reference(__dallocx, dallocx);
136 __weak_reference(__nallocx, nallocx);
137 __weak_reference(__allocm, allocm);
138 __weak_reference(__rallocm, rallocm);
139 __weak_reference(__sallocm, sallocm);
140 __weak_reference(__dallocm, dallocm);
141 __weak_reference(__nallocm, nallocm);