forked from eclipse-omr/omr
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathomrcfg.h.in
276 lines (238 loc) · 8.1 KB
/
omrcfg.h.in
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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
/*******************************************************************************
* Copyright (c) 2015, 2019 IBM Corp. and others
*
* This program and the accompanying materials are made available under
* the terms of the Eclipse Public License 2.0 which accompanies this
* distribution and is available at https://www.eclipse.org/legal/epl-2.0/
* or the Apache License, Version 2.0 which accompanies this distribution and
* is available at https://www.apache.org/licenses/LICENSE-2.0.
*
* This Source Code may also be made available under the following
* Secondary Licenses when the conditions for such availability set
* forth in the Eclipse Public License, v. 2.0 are satisfied: GNU
* General Public License, version 2 with the GNU Classpath
* Exception [1] and GNU General Public License, version 2 with the
* OpenJDK Assembly Exception [2].
*
* [1] https://www.gnu.org/software/classpath/license.html
* [2] http://openjdk.java.net/legal/assembly-exception.html
*
* SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 OR LicenseRef-GPL-2.0 WITH Assembly-exception
*******************************************************************************/
/* ATTENTION: when updating this file, be sure to also update omrcfg.CMakeTemplate.h */
/**
* The OMR build configuration. A public header. Controls the APIs of all other headers.
* Include at the top of every OMR source and header.
*/
#if !defined(OMRCFG_H_)
#define OMRCFG_H_
/**
* @ddr_namespace: map_to_type=OmrBuildFlags
* @ddr_options: valuesandbuildflags
*/
#undef OMR_GC
#undef OMR_COMPILER
#undef OMR_JITBUILDER
#undef OMR_TEST_COMPILER
#undef OMR_PORT
#undef OMR_THREAD
#undef OMR_OMRSIG
#undef OMR_EXAMPLE
#undef OMR_GC_ALLOCATION_TAX
#undef OMR_GC_OBJECT_ALLOCATION_NOTIFY
#undef OMR_GC_BATCH_CLEAR_TLH
#undef OMR_GC_COMBINATION_SPEC
#undef OMR_GC_CONCURRENT_SWEEP
#undef OMR_GC_DEBUG_ASSERTS
#undef OMR_GC_HEAP_CARD_TABLE
#undef OMR_GC_IDLE_HEAP_MANAGER
#undef OMR_GC_LARGE_OBJECT_AREA
#undef OMR_GC_LEAF_BITS
#undef OMR_GC_MINIMUM_OBJECT_SIZE
#undef OMR_GC_MODRON_COMPACTION
#undef OMR_GC_MODRON_CONCURRENT_MARK
#undef OMR_GC_MODRON_SCAVENGER
#undef OMR_GC_CONCURRENT_SCAVENGER
#undef OMR_GC_MODRON_STANDARD
#undef OMR_GC_NON_ZERO_TLH
#undef OMR_GC_SCAN_OBJECT_GLUE
#undef OMR_GC_SEGREGATED_HEAP
#undef OMR_GC_THREAD_LOCAL_HEAP
#undef OMR_GC_DOUBLE_MAP_ARRAYLETS
#undef OMR_GC_VLHGC_CONCURRENT_COPY_FORWARD
/**
* Tells if a platform has support for Semaphores.
* ifRemoved: platform cannot use semaphore operations.
*/
#undef OMR_INTERP_HAS_SEMAPHORES
/**
* Use TDF based trace engine
* ifRemoved: No tracepoints
*/
#undef OMR_RAS_TDF_TRACE
/**
* Support options to adapt spinning as controlled by options provided to the vm.
* Requires flag: OMR_THR_JLM_HOLD_TIMES
* ifRemoved: No adaptive spinning supported
*/
#undef OMR_THR_ADAPTIVE_SPIN
/**
* Enable support for lock monitor to profile locking behaviour - counts only
* ifRemoved: Lock monitor cannot be enabled
*/
#undef OMR_THR_JLM
/**
* Enable support for lock monitor to profile locking behaviour - counts + timings only
* ifRemoved: Lock monitor cannot be enabled
*/
#undef OMR_THR_JLM_HOLD_TIMES
/**
* object header does not contain the monitor word
* ifRemoved: object header will contain the monitor word
*/
#undef OMR_THR_LOCK_NURSERY
/**
* Output lots of thread statistics (Pentium only)
* ifRemoved: Turn off in production VMs
*/
#undef OMR_THR_TRACING
#undef OMRTHREAD_LIB_AIX
#undef OMRTHREAD_LIB_UNIX
#undef OMRTHREAD_LIB_WIN32
#undef OMRTHREAD_LIB_ZOS
/**
* This spec targets PPC processors.
*/
#undef OMR_ARCH_POWER
/**
* This spec targets ARM processors.
*/
#undef OMR_ARCH_ARM
/**
* This spec targets x86 processors.
*/
#undef OMR_ARCH_X86
/**
* This spec targets S390 processors.
*/
#undef OMR_ARCH_S390
#undef OMR_ENV_DATA64
#undef OMR_ENV_GCC
#undef OMR_ENV_LITTLE_ENDIAN
#undef OMR_GC_COMPRESSED_POINTERS
#undef OMR_GC_OBJECT_MAP
#undef OMR_GC_REALTIME
#undef OMR_GC_TLH_PREFETCH_FTA
#undef OMR_GC_VLHGC
/**
* Flag to indicate that on 64-bit platforms, the monitor slot and class slot in object headers are U32 rather than UDATA.
*/
#undef OMR_INTERP_COMPRESSED_OBJECT_HEADER
/**
* Flag to indicate that on 64-bit platforms, the monitor slot in object headers is a U32 rather than a UDATA.
* ifRemoved: The monitor slot is a UDATA.
*/
#undef OMR_INTERP_SMALL_MONITOR_SLOT
/**
* Add support for CUDA
*/
#undef OMR_OPT_CUDA
/**
* Enabling this flag implies the platform's vmem implementation is able to allocate memory top down.
* ifRemoved: Implies the platform's vmem implementation is not able to allocate memory top down
*/
#undef OMR_PORT_ALLOCATE_TOP_DOWN
/**
* Enables async signal handler thread in the port library.
* ifRemoved: Async signal handler thread is disabled.
*/
#undef OMR_PORT_ASYNC_HANDLER
/**
* The platform is able to attempt to reserve virtual memory via a call to omrvmem_reserve_memory at the address specified by the user.
* ifRemoved: The platform is not able to reserve virtual memory at a specific address
*/
#undef OMR_PORT_CAN_RESERVE_SPECIFIC_ADDRESS
/**
* This platform is able to associate memory with a specific node, as is relevant when the system has a Non Uniform Memory Access configuration.
* ifRemoved: This platform is not able to associate memory with a specific node.
*/
#undef OMR_PORT_NUMA_SUPPORT
/**
* If set, omrsig_protect will include support for registering a handler using CEEHDLR.
* Pass OMRPORT_SIG_OPTIONS_ZOS_USE_CEEHDLR into omrsig_set_options() before the first call
* to omrsig_protect() to turn on the use of CEEHDLR at runtime.
* ifRemoved: omrsig_protect will not include support for CEEHDLR.
*/
#undef OMR_PORT_ZOS_CEEHDLRSUPPORT
/**
* Enable the j9thread library to be used after a fork().
* ifRemoved: The j9thread library may be corrupt and unusable after a fork().
*/
#undef OMR_THR_FORK_SUPPORT
/**
* Attempt to enter raw monitors using user-space spinlocks before reverting to an OS synchronization object
* ifRemoved: All raw monitor enters will proceed directly to an OS synchronization object
*/
#undef OMR_THR_THREE_TIER_LOCKING
/**
* Enable support for custom spin options.
* Requires flag: OMR_THR_THREE_TIER_LOCKING.
* ifRemoved: Custom spin options cannot be used.
*/
#undef OMR_THR_CUSTOM_SPIN_OPTIONS
/**
* Allows a user to select the thread notify policy: signal or broadcast.
* ifRemoved: User will not be able to select the thread notify policy, and broadcast policy will always be used.
*/
#undef OMR_NOTIFY_POLICY_CONTROL
/**
* This flag enables new synchronization prototypes which
* -- prevent large number of threads to spin at a time on a monitor
* -- avoid the thundering herd problem on wake up
*
* The prototypes provide the following features
* -- track number of threads spinning on a monitor
* -- wake threads only when no thread is spinning on a monitor
* -- limit/control number of threads that are woken up per monitor
* -- limit/control number of threads that are allowed to spin per monitor
*/
#undef OMR_THR_SPIN_WAKE_CONTROL
/**
* This enables the option to select different algorithms for yielding.
*/
#undef OMR_THR_YIELD_ALG
/**
* Dwarf
*/
#undef HAVE_DWARF_H
#undef HAVE_LIBDWARF_DWARF_H
#undef HAVE_LIBDWARF_H
#undef HAVE_LIBDWARF_LIBDWARF_H
/**
* Flag to enable integration of valgrind api.
*/
#undef OMR_VALGRIND_MEMCHECK
/**
* This flags enables calls to omrsig_primary_signal, omrsig_primary_sigaction and
* omrsig_handler (omrsig library). If disabled, then calls to signal and sigaction
* will be enabled, and calls to functions in omrsig library will be disabled.
*/
#undef OMRPORT_OMRSIG_SUPPORT
/**
* Platform config options.
* Note: these are determined at configure time with cmake.
* For the autoconf builds, we just hard code them based on platform
*/
#if defined(LINUX) || defined(AIXPPC)
#define OMR_USE_POSIX_SEMAPHORES
#elif defined(OSX)
#define OMR_USE_OSX_SEMAPHORES
#elif defined(J9ZOS390)
#define OMR_USE_ZOS_SEMAPHORES
#endif
/**
* This flag enables the usage of the MCS (queue-based) lock instead of the default
* TATAS (Test & Test & Set) lock in the OMR thread monitor.
*/
#undef OMR_THR_MCS_LOCKS
#endif /* !defined(OMRCFG_H_) */