1 #ifndef JEMALLOC_PREAMBLE_H
2 #define JEMALLOC_PREAMBLE_H
3 
4 #include "jemalloc_internal_defs.h"
5 #include "jemalloc/internal/jemalloc_internal_decls.h"
6 
7 #ifdef JEMALLOC_UTRACE
8 #include <sys/ktrace.h>
9 #endif
10 
11 #include "un-namespace.h"
12 #include "libc_private.h"
13 
14 #define JEMALLOC_NO_DEMANGLE
15 #ifdef JEMALLOC_JET
16 #  undef JEMALLOC_IS_MALLOC
17 #  define JEMALLOC_N(n) jet_##n
18 #  include "jemalloc/internal/public_namespace.h"
19 #  define JEMALLOC_NO_RENAME
20 #  include "../jemalloc.h"
21 #  undef JEMALLOC_NO_RENAME
22 #else
23 #  define JEMALLOC_N(n) __je_##n
24 #  include "../jemalloc.h"
25 #endif
26 
27 #if defined(JEMALLOC_OSATOMIC)
28 #include <libkern/OSAtomic.h>
29 #endif
30 
31 #ifdef JEMALLOC_ZONE
32 #include <mach/mach_error.h>
33 #include <mach/mach_init.h>
34 #include <mach/vm_map.h>
35 #endif
36 
37 #include "jemalloc/internal/jemalloc_internal_macros.h"
38 
39 /*
40  * Note that the ordering matters here; the hook itself is name-mangled.  We
41  * want the inclusion of hooks to happen early, so that we hook as much as
42  * possible.
43  */
44 #ifndef JEMALLOC_NO_PRIVATE_NAMESPACE
45 #  ifndef JEMALLOC_JET
46 #    include "jemalloc/internal/private_namespace.h"
47 #  else
48 #    include "jemalloc/internal/private_namespace_jet.h"
49 #  endif
50 #endif
51 #include "jemalloc/internal/test_hooks.h"
52 
53 #ifdef JEMALLOC_DEFINE_MADVISE_FREE
54 #  define JEMALLOC_MADV_FREE 8
55 #endif
56 
57 static const bool config_debug =
58 #ifdef JEMALLOC_DEBUG
59     true
60 #else
61     false
62 #endif
63     ;
64 static const bool have_dss =
65 #ifdef JEMALLOC_DSS
66     true
67 #else
68     false
69 #endif
70     ;
71 static const bool have_madvise_huge =
72 #ifdef JEMALLOC_HAVE_MADVISE_HUGE
73     true
74 #else
75     false
76 #endif
77     ;
78 static const bool config_fill =
79 #ifdef JEMALLOC_FILL
80     true
81 #else
82     false
83 #endif
84     ;
85 static const bool config_lazy_lock = true;
86 static const char * const config_malloc_conf = JEMALLOC_CONFIG_MALLOC_CONF;
87 static const bool config_prof =
88 #ifdef JEMALLOC_PROF
89     true
90 #else
91     false
92 #endif
93     ;
94 static const bool config_prof_libgcc =
95 #ifdef JEMALLOC_PROF_LIBGCC
96     true
97 #else
98     false
99 #endif
100     ;
101 static const bool config_prof_libunwind =
102 #ifdef JEMALLOC_PROF_LIBUNWIND
103     true
104 #else
105     false
106 #endif
107     ;
108 static const bool maps_coalesce =
109 #ifdef JEMALLOC_MAPS_COALESCE
110     true
111 #else
112     false
113 #endif
114     ;
115 static const bool config_stats =
116 #ifdef JEMALLOC_STATS
117     true
118 #else
119     false
120 #endif
121     ;
122 static const bool config_tls =
123 #ifdef JEMALLOC_TLS
124     true
125 #else
126     false
127 #endif
128     ;
129 static const bool config_utrace =
130 #ifdef JEMALLOC_UTRACE
131     true
132 #else
133     false
134 #endif
135     ;
136 static const bool config_xmalloc =
137 #ifdef JEMALLOC_XMALLOC
138     true
139 #else
140     false
141 #endif
142     ;
143 static const bool config_cache_oblivious =
144 #ifdef JEMALLOC_CACHE_OBLIVIOUS
145     true
146 #else
147     false
148 #endif
149     ;
150 /*
151  * Undocumented, for jemalloc development use only at the moment.  See the note
152  * in jemalloc/internal/log.h.
153  */
154 static const bool config_log =
155 #ifdef JEMALLOC_LOG
156     true
157 #else
158     false
159 #endif
160     ;
161 /*
162  * Are extra safety checks enabled; things like checking the size of sized
163  * deallocations, double-frees, etc.
164  */
165 static const bool config_opt_safety_checks =
166 #ifdef JEMALLOC_OPT_SAFETY_CHECKS
167     true
168 #elif defined(JEMALLOC_DEBUG)
169     /*
170      * This lets us only guard safety checks by one flag instead of two; fast
171      * checks can guard solely by config_opt_safety_checks and run in debug mode
172      * too.
173      */
174     true
175 #else
176     false
177 #endif
178     ;
179 
180 #if defined(_WIN32) || defined(JEMALLOC_HAVE_SCHED_GETCPU)
181 /* Currently percpu_arena depends on sched_getcpu. */
182 #define JEMALLOC_PERCPU_ARENA
183 #endif
184 static const bool have_percpu_arena =
185 #ifdef JEMALLOC_PERCPU_ARENA
186     true
187 #else
188     false
189 #endif
190     ;
191 /*
192  * Undocumented, and not recommended; the application should take full
193  * responsibility for tracking provenance.
194  */
195 static const bool force_ivsalloc =
196 #ifdef JEMALLOC_FORCE_IVSALLOC
197     true
198 #else
199     false
200 #endif
201     ;
202 static const bool have_background_thread =
203 #ifdef JEMALLOC_BACKGROUND_THREAD
204     true
205 #else
206     false
207 #endif
208     ;
209 
210 #endif /* JEMALLOC_PREAMBLE_H */
211