32 #include "gc/g1/g1_globals.hpp"
33 #endif
34 #if INCLUDE_JVMCI
35 #include "jvmci/jvmci_globals.hpp"
36 #endif
37 #ifdef COMPILER1
38 #include "c1/c1_globals.hpp"
39 #endif
40 #ifdef COMPILER2
41 #include "opto/c2_globals.hpp"
42 #endif
43
44 // Construct enum of Flag_<cmdline-arg> constants.
45
46 // Parenthesis left off in the following for the enum decl below.
47 #define FLAG_MEMBER(flag) Flag_##flag
48
49 #define RUNTIME_PRODUCT_FLAG_MEMBER(type, name, value, doc) FLAG_MEMBER(name),
50 #define RUNTIME_PD_PRODUCT_FLAG_MEMBER(type, name, doc) FLAG_MEMBER(name),
51 #define RUNTIME_DIAGNOSTIC_FLAG_MEMBER(type, name, value, doc) FLAG_MEMBER(name),
52 #define RUNTIME_EXPERIMENTAL_FLAG_MEMBER(type, name, value, doc) FLAG_MEMBER(name),
53 #define RUNTIME_MANAGEABLE_FLAG_MEMBER(type, name, value, doc) FLAG_MEMBER(name),
54 #define RUNTIME_PRODUCT_RW_FLAG_MEMBER(type, name, value, doc) FLAG_MEMBER(name),
55 #define RUNTIME_DEVELOP_FLAG_MEMBER(type, name, value, doc) FLAG_MEMBER(name),
56 #define RUNTIME_PD_DEVELOP_FLAG_MEMBER(type, name, doc) FLAG_MEMBER(name),
57 #define RUNTIME_NOTPRODUCT_FLAG_MEMBER(type, name, value, doc) FLAG_MEMBER(name),
58
59 #define JVMCI_PRODUCT_FLAG_MEMBER(type, name, value, doc) FLAG_MEMBER(name),
60 #define JVMCI_PD_PRODUCT_FLAG_MEMBER(type, name, doc) FLAG_MEMBER(name),
61 #define JVMCI_DEVELOP_FLAG_MEMBER(type, name, value, doc) FLAG_MEMBER(name),
62 #define JVMCI_PD_DEVELOP_FLAG_MEMBER(type, name, doc) FLAG_MEMBER(name),
63 #define JVMCI_DIAGNOSTIC_FLAG_MEMBER(type, name, value, doc) FLAG_MEMBER(name),
64 #define JVMCI_EXPERIMENTAL_FLAG_MEMBER(type, name, value, doc) FLAG_MEMBER(name),
65 #define JVMCI_NOTPRODUCT_FLAG_MEMBER(type, name, value, doc) FLAG_MEMBER(name),
66
67 #ifdef _LP64
68 #define RUNTIME_LP64_PRODUCT_FLAG_MEMBER(type, name, value, doc) FLAG_MEMBER(name),
69 #else
70 #define RUNTIME_LP64_PRODUCT_FLAG_MEMBER(type, name, value, doc) /* flag is constant */
71 #endif // _LP64
72
73 #define C1_PRODUCT_FLAG_MEMBER(type, name, value, doc) FLAG_MEMBER(name),
74 #define C1_PD_PRODUCT_FLAG_MEMBER(type, name, doc) FLAG_MEMBER(name),
75 #define C1_DIAGNOSTIC_FLAG_MEMBER(type, name, value, doc) FLAG_MEMBER(name),
76 #define C1_DEVELOP_FLAG_MEMBER(type, name, value, doc) FLAG_MEMBER(name),
77 #define C1_PD_DEVELOP_FLAG_MEMBER(type, name, doc) FLAG_MEMBER(name),
78 #define C1_NOTPRODUCT_FLAG_MEMBER(type, name, value, doc) FLAG_MEMBER(name),
79
80 #define C2_PRODUCT_FLAG_MEMBER(type, name, value, doc) FLAG_MEMBER(name),
81 #define C2_PD_PRODUCT_FLAG_MEMBER(type, name, doc) FLAG_MEMBER(name),
82 #define C2_DIAGNOSTIC_FLAG_MEMBER(type, name, value, doc) FLAG_MEMBER(name),
83 #define C2_EXPERIMENTAL_FLAG_MEMBER(type, name, value, doc) FLAG_MEMBER(name),
84 #define C2_DEVELOP_FLAG_MEMBER(type, name, value, doc) FLAG_MEMBER(name),
85 #define C2_PD_DEVELOP_FLAG_MEMBER(type, name, doc) FLAG_MEMBER(name),
86 #define C2_NOTPRODUCT_FLAG_MEMBER(type, name, value, doc) FLAG_MEMBER(name),
87
88 #define ARCH_PRODUCT_FLAG_MEMBER(type, name, value, doc) FLAG_MEMBER(name),
89 #define ARCH_DIAGNOSTIC_FLAG_MEMBER(type, name, value, doc) FLAG_MEMBER(name),
90 #define ARCH_EXPERIMENTAL_FLAG_MEMBER(type, name, value, doc) FLAG_MEMBER(name),
91 #define ARCH_DEVELOP_FLAG_MEMBER(type, name, value, doc) FLAG_MEMBER(name),
92 #define ARCH_NOTPRODUCT_FLAG_MEMBER(type, name, value, doc) FLAG_MEMBER(name),
93
94 typedef enum {
95 RUNTIME_FLAGS(RUNTIME_DEVELOP_FLAG_MEMBER, \
96 RUNTIME_PD_DEVELOP_FLAG_MEMBER, \
97 RUNTIME_PRODUCT_FLAG_MEMBER, \
98 RUNTIME_PD_PRODUCT_FLAG_MEMBER, \
99 RUNTIME_DIAGNOSTIC_FLAG_MEMBER, \
100 RUNTIME_EXPERIMENTAL_FLAG_MEMBER, \
101 RUNTIME_NOTPRODUCT_FLAG_MEMBER, \
102 RUNTIME_MANAGEABLE_FLAG_MEMBER, \
103 RUNTIME_PRODUCT_RW_FLAG_MEMBER, \
104 RUNTIME_LP64_PRODUCT_FLAG_MEMBER, \
105 IGNORE_RANGE, \
106 IGNORE_CONSTRAINT, \
107 IGNORE_WRITEABLE)
108 RUNTIME_OS_FLAGS(RUNTIME_DEVELOP_FLAG_MEMBER, \
109 RUNTIME_PD_DEVELOP_FLAG_MEMBER, \
110 RUNTIME_PRODUCT_FLAG_MEMBER, \
111 RUNTIME_PD_PRODUCT_FLAG_MEMBER, \
112 RUNTIME_DIAGNOSTIC_FLAG_MEMBER, \
113 RUNTIME_NOTPRODUCT_FLAG_MEMBER, \
114 IGNORE_RANGE, \
115 IGNORE_CONSTRAINT, \
116 IGNORE_WRITEABLE)
117 #if INCLUDE_ALL_GCS
118 G1_FLAGS(RUNTIME_DEVELOP_FLAG_MEMBER, \
119 RUNTIME_PD_DEVELOP_FLAG_MEMBER, \
120 RUNTIME_PRODUCT_FLAG_MEMBER, \
121 RUNTIME_PD_PRODUCT_FLAG_MEMBER, \
122 RUNTIME_DIAGNOSTIC_FLAG_MEMBER, \
123 RUNTIME_EXPERIMENTAL_FLAG_MEMBER, \
124 RUNTIME_NOTPRODUCT_FLAG_MEMBER, \
125 RUNTIME_MANAGEABLE_FLAG_MEMBER, \
126 RUNTIME_PRODUCT_RW_FLAG_MEMBER, \
127 IGNORE_RANGE, \
128 IGNORE_CONSTRAINT, \
129 IGNORE_WRITEABLE)
130 #endif // INCLUDE_ALL_GCS
131 #if INCLUDE_JVMCI
132 JVMCI_FLAGS(JVMCI_DEVELOP_FLAG_MEMBER, \
133 JVMCI_PD_DEVELOP_FLAG_MEMBER, \
134 JVMCI_PRODUCT_FLAG_MEMBER, \
135 JVMCI_PD_PRODUCT_FLAG_MEMBER, \
136 JVMCI_DIAGNOSTIC_FLAG_MEMBER, \
137 JVMCI_EXPERIMENTAL_FLAG_MEMBER, \
138 JVMCI_NOTPRODUCT_FLAG_MEMBER, \
139 IGNORE_RANGE, \
140 IGNORE_CONSTRAINT, \
141 IGNORE_WRITEABLE)
142 #endif // INCLUDE_JVMCI
143 #ifdef COMPILER1
144 C1_FLAGS(C1_DEVELOP_FLAG_MEMBER, \
145 C1_PD_DEVELOP_FLAG_MEMBER, \
146 C1_PRODUCT_FLAG_MEMBER, \
147 C1_PD_PRODUCT_FLAG_MEMBER, \
148 C1_DIAGNOSTIC_FLAG_MEMBER, \
149 C1_NOTPRODUCT_FLAG_MEMBER, \
150 IGNORE_RANGE, \
151 IGNORE_CONSTRAINT, \
152 IGNORE_WRITEABLE)
153 #endif
154 #ifdef COMPILER2
155 C2_FLAGS(C2_DEVELOP_FLAG_MEMBER, \
156 C2_PD_DEVELOP_FLAG_MEMBER, \
157 C2_PRODUCT_FLAG_MEMBER, \
158 C2_PD_PRODUCT_FLAG_MEMBER, \
159 C2_DIAGNOSTIC_FLAG_MEMBER, \
160 C2_EXPERIMENTAL_FLAG_MEMBER, \
161 C2_NOTPRODUCT_FLAG_MEMBER, \
162 IGNORE_RANGE, \
163 IGNORE_CONSTRAINT, \
164 IGNORE_WRITEABLE)
165 #endif
166 ARCH_FLAGS(ARCH_DEVELOP_FLAG_MEMBER, \
167 ARCH_PRODUCT_FLAG_MEMBER, \
168 ARCH_DIAGNOSTIC_FLAG_MEMBER, \
169 ARCH_EXPERIMENTAL_FLAG_MEMBER, \
170 ARCH_NOTPRODUCT_FLAG_MEMBER, \
171 IGNORE_RANGE, \
172 IGNORE_CONSTRAINT, \
173 IGNORE_WRITEABLE)
174 COMMANDLINEFLAG_EXT
175 NUM_CommandLineFlag
176 } CommandLineFlag;
177
178 // Construct enum of Flag_<cmdline-arg>_<type> constants.
179
180 #define FLAG_MEMBER_WITH_TYPE(flag,type) Flag_##flag##_##type
181
182 #define RUNTIME_PRODUCT_FLAG_MEMBER_WITH_TYPE(type, name, value, doc) FLAG_MEMBER_WITH_TYPE(name,type),
183 #define RUNTIME_PD_PRODUCT_FLAG_MEMBER_WITH_TYPE(type, name, doc) FLAG_MEMBER_WITH_TYPE(name,type),
184 #define RUNTIME_DIAGNOSTIC_FLAG_MEMBER_WITH_TYPE(type, name, value, doc) FLAG_MEMBER_WITH_TYPE(name,type),
185 #define RUNTIME_EXPERIMENTAL_FLAG_MEMBER_WITH_TYPE(type, name, value, doc) FLAG_MEMBER_WITH_TYPE(name,type),
186 #define RUNTIME_MANAGEABLE_FLAG_MEMBER_WITH_TYPE(type, name, value, doc) FLAG_MEMBER_WITH_TYPE(name,type),
187 #define RUNTIME_PRODUCT_RW_FLAG_MEMBER_WITH_TYPE(type, name, value, doc) FLAG_MEMBER_WITH_TYPE(name,type),
188 #define RUNTIME_DEVELOP_FLAG_MEMBER_WITH_TYPE(type, name, value, doc) FLAG_MEMBER_WITH_TYPE(name,type),
189 #define RUNTIME_PD_DEVELOP_FLAG_MEMBER_WITH_TYPE(type, name, doc) FLAG_MEMBER_WITH_TYPE(name,type),
190 #define RUNTIME_NOTPRODUCT_FLAG_MEMBER_WITH_TYPE(type, name, value, doc) FLAG_MEMBER_WITH_TYPE(name,type),
191
192 #define JVMCI_PRODUCT_FLAG_MEMBER_WITH_TYPE(type, name, value, doc) FLAG_MEMBER_WITH_TYPE(name,type),
193 #define JVMCI_PD_PRODUCT_FLAG_MEMBER_WITH_TYPE(type, name, doc) FLAG_MEMBER_WITH_TYPE(name,type),
194 #define JVMCI_DEVELOP_FLAG_MEMBER_WITH_TYPE(type, name, value, doc) FLAG_MEMBER_WITH_TYPE(name,type),
195 #define JVMCI_PD_DEVELOP_FLAG_MEMBER_WITH_TYPE(type, name, doc) FLAG_MEMBER_WITH_TYPE(name,type),
196 #define JVMCI_DIAGNOSTIC_FLAG_MEMBER_WITH_TYPE(type, name, value, doc) FLAG_MEMBER_WITH_TYPE(name,type),
197 #define JVMCI_EXPERIMENTAL_FLAG_MEMBER_WITH_TYPE(type, name, value, doc) FLAG_MEMBER_WITH_TYPE(name,type),
198 #define JVMCI_NOTPRODUCT_FLAG_MEMBER_WITH_TYPE(type, name, value, doc) FLAG_MEMBER_WITH_TYPE(name,type),
199
200 #define C1_PRODUCT_FLAG_MEMBER_WITH_TYPE(type, name, value, doc) FLAG_MEMBER_WITH_TYPE(name,type),
201 #define C1_PD_PRODUCT_FLAG_MEMBER_WITH_TYPE(type, name, doc) FLAG_MEMBER_WITH_TYPE(name,type),
202 #define C1_DIAGNOSTIC_FLAG_MEMBER_WITH_TYPE(type, name, value, doc) FLAG_MEMBER_WITH_TYPE(name,type),
203 #define C1_DEVELOP_FLAG_MEMBER_WITH_TYPE(type, name, value, doc) FLAG_MEMBER_WITH_TYPE(name,type),
204 #define C1_PD_DEVELOP_FLAG_MEMBER_WITH_TYPE(type, name, doc) FLAG_MEMBER_WITH_TYPE(name,type),
205 #define C1_NOTPRODUCT_FLAG_MEMBER_WITH_TYPE(type, name, value, doc) FLAG_MEMBER_WITH_TYPE(name,type),
206
207 #ifdef _LP64
208 #define RUNTIME_LP64_PRODUCT_FLAG_MEMBER_WITH_TYPE(type, name, value, doc) FLAG_MEMBER_WITH_TYPE(name,type),
209 #else
210 #define RUNTIME_LP64_PRODUCT_FLAG_MEMBER_WITH_TYPE(type, name, value, doc) /* flag is constant */
211 #endif // _LP64
212
213 #define C2_PRODUCT_FLAG_MEMBER_WITH_TYPE(type, name, value, doc) FLAG_MEMBER_WITH_TYPE(name,type),
214 #define C2_PD_PRODUCT_FLAG_MEMBER_WITH_TYPE(type, name, doc) FLAG_MEMBER_WITH_TYPE(name,type),
215 #define C2_DIAGNOSTIC_FLAG_MEMBER_WITH_TYPE(type, name, value, doc) FLAG_MEMBER_WITH_TYPE(name,type),
216 #define C2_EXPERIMENTAL_FLAG_MEMBER_WITH_TYPE(type, name, value, doc) FLAG_MEMBER_WITH_TYPE(name,type),
217 #define C2_DEVELOP_FLAG_MEMBER_WITH_TYPE(type, name, value, doc) FLAG_MEMBER_WITH_TYPE(name,type),
218 #define C2_PD_DEVELOP_FLAG_MEMBER_WITH_TYPE(type, name, doc) FLAG_MEMBER_WITH_TYPE(name,type),
219 #define C2_NOTPRODUCT_FLAG_MEMBER_WITH_TYPE(type, name, value, doc) FLAG_MEMBER_WITH_TYPE(name,type),
220
221 #define ARCH_PRODUCT_FLAG_MEMBER_WITH_TYPE(type, name, value, doc) FLAG_MEMBER_WITH_TYPE(name,type),
222 #define ARCH_DIAGNOSTIC_FLAG_MEMBER_WITH_TYPE(type, name, value, doc) FLAG_MEMBER_WITH_TYPE(name,type),
223 #define ARCH_EXPERIMENTAL_FLAG_MEMBER_WITH_TYPE(type, name, value, doc) FLAG_MEMBER_WITH_TYPE(name,type),
224 #define ARCH_DEVELOP_FLAG_MEMBER_WITH_TYPE(type, name, value, doc) FLAG_MEMBER_WITH_TYPE(name,type),
225 #define ARCH_NOTPRODUCT_FLAG_MEMBER_WITH_TYPE(type, name, value, doc) FLAG_MEMBER_WITH_TYPE(name,type),
226
227 typedef enum {
228 RUNTIME_FLAGS(RUNTIME_DEVELOP_FLAG_MEMBER_WITH_TYPE,
229 RUNTIME_PD_DEVELOP_FLAG_MEMBER_WITH_TYPE,
230 RUNTIME_PRODUCT_FLAG_MEMBER_WITH_TYPE,
231 RUNTIME_PD_PRODUCT_FLAG_MEMBER_WITH_TYPE,
232 RUNTIME_DIAGNOSTIC_FLAG_MEMBER_WITH_TYPE,
233 RUNTIME_EXPERIMENTAL_FLAG_MEMBER_WITH_TYPE,
234 RUNTIME_NOTPRODUCT_FLAG_MEMBER_WITH_TYPE,
235 RUNTIME_MANAGEABLE_FLAG_MEMBER_WITH_TYPE,
236 RUNTIME_PRODUCT_RW_FLAG_MEMBER_WITH_TYPE,
237 RUNTIME_LP64_PRODUCT_FLAG_MEMBER_WITH_TYPE,
238 IGNORE_RANGE,
239 IGNORE_CONSTRAINT,
240 IGNORE_WRITEABLE)
241 RUNTIME_OS_FLAGS(RUNTIME_DEVELOP_FLAG_MEMBER_WITH_TYPE,
242 RUNTIME_PD_DEVELOP_FLAG_MEMBER_WITH_TYPE,
243 RUNTIME_PRODUCT_FLAG_MEMBER_WITH_TYPE,
244 RUNTIME_PD_PRODUCT_FLAG_MEMBER_WITH_TYPE,
245 RUNTIME_DIAGNOSTIC_FLAG_MEMBER_WITH_TYPE,
246 RUNTIME_NOTPRODUCT_FLAG_MEMBER_WITH_TYPE,
247 IGNORE_RANGE,
248 IGNORE_CONSTRAINT,
249 IGNORE_WRITEABLE)
250 #if INCLUDE_ALL_GCS
251 G1_FLAGS(RUNTIME_DEVELOP_FLAG_MEMBER_WITH_TYPE,
252 RUNTIME_PD_DEVELOP_FLAG_MEMBER_WITH_TYPE,
253 RUNTIME_PRODUCT_FLAG_MEMBER_WITH_TYPE,
254 RUNTIME_PD_PRODUCT_FLAG_MEMBER_WITH_TYPE,
255 RUNTIME_DIAGNOSTIC_FLAG_MEMBER_WITH_TYPE,
256 RUNTIME_EXPERIMENTAL_FLAG_MEMBER_WITH_TYPE,
257 RUNTIME_NOTPRODUCT_FLAG_MEMBER_WITH_TYPE,
258 RUNTIME_MANAGEABLE_FLAG_MEMBER_WITH_TYPE,
259 RUNTIME_PRODUCT_RW_FLAG_MEMBER_WITH_TYPE,
260 IGNORE_RANGE,
261 IGNORE_CONSTRAINT,
262 IGNORE_WRITEABLE)
263 #endif // INCLUDE_ALL_GCS
264 #if INCLUDE_JVMCI
265 JVMCI_FLAGS(JVMCI_DEVELOP_FLAG_MEMBER_WITH_TYPE,
266 JVMCI_PD_DEVELOP_FLAG_MEMBER_WITH_TYPE,
267 JVMCI_PRODUCT_FLAG_MEMBER_WITH_TYPE,
268 JVMCI_PD_PRODUCT_FLAG_MEMBER_WITH_TYPE,
269 JVMCI_DIAGNOSTIC_FLAG_MEMBER_WITH_TYPE,
270 JVMCI_EXPERIMENTAL_FLAG_MEMBER_WITH_TYPE,
271 JVMCI_NOTPRODUCT_FLAG_MEMBER_WITH_TYPE,
272 IGNORE_RANGE,
273 IGNORE_CONSTRAINT,
274 IGNORE_WRITEABLE)
275 #endif // INCLUDE_JVMCI
276 #ifdef COMPILER1
277 C1_FLAGS(C1_DEVELOP_FLAG_MEMBER_WITH_TYPE,
278 C1_PD_DEVELOP_FLAG_MEMBER_WITH_TYPE,
279 C1_PRODUCT_FLAG_MEMBER_WITH_TYPE,
280 C1_PD_PRODUCT_FLAG_MEMBER_WITH_TYPE,
281 C1_DIAGNOSTIC_FLAG_MEMBER_WITH_TYPE,
282 C1_NOTPRODUCT_FLAG_MEMBER_WITH_TYPE,
283 IGNORE_RANGE,
284 IGNORE_CONSTRAINT,
285 IGNORE_WRITEABLE)
286 #endif
287 #ifdef COMPILER2
288 C2_FLAGS(C2_DEVELOP_FLAG_MEMBER_WITH_TYPE,
289 C2_PD_DEVELOP_FLAG_MEMBER_WITH_TYPE,
290 C2_PRODUCT_FLAG_MEMBER_WITH_TYPE,
291 C2_PD_PRODUCT_FLAG_MEMBER_WITH_TYPE,
292 C2_DIAGNOSTIC_FLAG_MEMBER_WITH_TYPE,
293 C2_EXPERIMENTAL_FLAG_MEMBER_WITH_TYPE,
294 C2_NOTPRODUCT_FLAG_MEMBER_WITH_TYPE,
295 IGNORE_RANGE,
296 IGNORE_CONSTRAINT,
297 IGNORE_WRITEABLE)
298 #endif
299 ARCH_FLAGS(ARCH_DEVELOP_FLAG_MEMBER_WITH_TYPE,
300 ARCH_PRODUCT_FLAG_MEMBER_WITH_TYPE,
301 ARCH_DIAGNOSTIC_FLAG_MEMBER_WITH_TYPE,
302 ARCH_EXPERIMENTAL_FLAG_MEMBER_WITH_TYPE,
303 ARCH_NOTPRODUCT_FLAG_MEMBER_WITH_TYPE,
304 IGNORE_RANGE,
305 IGNORE_CONSTRAINT,
306 IGNORE_WRITEABLE)
307 COMMANDLINEFLAGWITHTYPE_EXT
308 NUM_CommandLineFlagWithType
309 } CommandLineFlagWithType;
310
311 #define FLAG_IS_DEFAULT(name) (CommandLineFlagsEx::is_default(FLAG_MEMBER(name)))
312 #define FLAG_IS_ERGO(name) (CommandLineFlagsEx::is_ergo(FLAG_MEMBER(name)))
|
32 #include "gc/g1/g1_globals.hpp"
33 #endif
34 #if INCLUDE_JVMCI
35 #include "jvmci/jvmci_globals.hpp"
36 #endif
37 #ifdef COMPILER1
38 #include "c1/c1_globals.hpp"
39 #endif
40 #ifdef COMPILER2
41 #include "opto/c2_globals.hpp"
42 #endif
43
44 // Construct enum of Flag_<cmdline-arg> constants.
45
46 // Parenthesis left off in the following for the enum decl below.
47 #define FLAG_MEMBER(flag) Flag_##flag
48
49 #define RUNTIME_PRODUCT_FLAG_MEMBER(type, name, value, doc) FLAG_MEMBER(name),
50 #define RUNTIME_PD_PRODUCT_FLAG_MEMBER(type, name, doc) FLAG_MEMBER(name),
51 #define RUNTIME_DIAGNOSTIC_FLAG_MEMBER(type, name, value, doc) FLAG_MEMBER(name),
52 #define RUNTIME_PD_DIAGNOSTIC_FLAG_MEMBER(type, name, doc) FLAG_MEMBER(name),
53 #define RUNTIME_EXPERIMENTAL_FLAG_MEMBER(type, name, value, doc) FLAG_MEMBER(name),
54 #define RUNTIME_MANAGEABLE_FLAG_MEMBER(type, name, value, doc) FLAG_MEMBER(name),
55 #define RUNTIME_PRODUCT_RW_FLAG_MEMBER(type, name, value, doc) FLAG_MEMBER(name),
56 #define RUNTIME_DEVELOP_FLAG_MEMBER(type, name, value, doc) FLAG_MEMBER(name),
57 #define RUNTIME_PD_DEVELOP_FLAG_MEMBER(type, name, doc) FLAG_MEMBER(name),
58 #define RUNTIME_NOTPRODUCT_FLAG_MEMBER(type, name, value, doc) FLAG_MEMBER(name),
59
60 #define JVMCI_PRODUCT_FLAG_MEMBER(type, name, value, doc) FLAG_MEMBER(name),
61 #define JVMCI_PD_PRODUCT_FLAG_MEMBER(type, name, doc) FLAG_MEMBER(name),
62 #define JVMCI_DEVELOP_FLAG_MEMBER(type, name, value, doc) FLAG_MEMBER(name),
63 #define JVMCI_PD_DEVELOP_FLAG_MEMBER(type, name, doc) FLAG_MEMBER(name),
64 #define JVMCI_DIAGNOSTIC_FLAG_MEMBER(type, name, value, doc) FLAG_MEMBER(name),
65 #define JVMCI_PD_DIAGNOSTIC_FLAG_MEMBER(type, name, doc) FLAG_MEMBER(name),
66 #define JVMCI_EXPERIMENTAL_FLAG_MEMBER(type, name, value, doc) FLAG_MEMBER(name),
67 #define JVMCI_NOTPRODUCT_FLAG_MEMBER(type, name, value, doc) FLAG_MEMBER(name),
68
69 #ifdef _LP64
70 #define RUNTIME_LP64_PRODUCT_FLAG_MEMBER(type, name, value, doc) FLAG_MEMBER(name),
71 #else
72 #define RUNTIME_LP64_PRODUCT_FLAG_MEMBER(type, name, value, doc) /* flag is constant */
73 #endif // _LP64
74
75 #define C1_PRODUCT_FLAG_MEMBER(type, name, value, doc) FLAG_MEMBER(name),
76 #define C1_PD_PRODUCT_FLAG_MEMBER(type, name, doc) FLAG_MEMBER(name),
77 #define C1_DIAGNOSTIC_FLAG_MEMBER(type, name, value, doc) FLAG_MEMBER(name),
78 #define C1_PD_DIAGNOSTIC_FLAG_MEMBER(type, name, doc) FLAG_MEMBER(name),
79 #define C1_DEVELOP_FLAG_MEMBER(type, name, value, doc) FLAG_MEMBER(name),
80 #define C1_PD_DEVELOP_FLAG_MEMBER(type, name, doc) FLAG_MEMBER(name),
81 #define C1_NOTPRODUCT_FLAG_MEMBER(type, name, value, doc) FLAG_MEMBER(name),
82
83 #define C2_PRODUCT_FLAG_MEMBER(type, name, value, doc) FLAG_MEMBER(name),
84 #define C2_PD_PRODUCT_FLAG_MEMBER(type, name, doc) FLAG_MEMBER(name),
85 #define C2_DIAGNOSTIC_FLAG_MEMBER(type, name, value, doc) FLAG_MEMBER(name),
86 #define C2_PD_DIAGNOSTIC_FLAG_MEMBER(type, name, doc) FLAG_MEMBER(name),
87 #define C2_EXPERIMENTAL_FLAG_MEMBER(type, name, value, doc) FLAG_MEMBER(name),
88 #define C2_DEVELOP_FLAG_MEMBER(type, name, value, doc) FLAG_MEMBER(name),
89 #define C2_PD_DEVELOP_FLAG_MEMBER(type, name, doc) FLAG_MEMBER(name),
90 #define C2_NOTPRODUCT_FLAG_MEMBER(type, name, value, doc) FLAG_MEMBER(name),
91
92 #define ARCH_PRODUCT_FLAG_MEMBER(type, name, value, doc) FLAG_MEMBER(name),
93 #define ARCH_DIAGNOSTIC_FLAG_MEMBER(type, name, value, doc) FLAG_MEMBER(name),
94 #define ARCH_EXPERIMENTAL_FLAG_MEMBER(type, name, value, doc) FLAG_MEMBER(name),
95 #define ARCH_DEVELOP_FLAG_MEMBER(type, name, value, doc) FLAG_MEMBER(name),
96 #define ARCH_NOTPRODUCT_FLAG_MEMBER(type, name, value, doc) FLAG_MEMBER(name),
97
98 typedef enum {
99 RUNTIME_FLAGS(RUNTIME_DEVELOP_FLAG_MEMBER, \
100 RUNTIME_PD_DEVELOP_FLAG_MEMBER, \
101 RUNTIME_PRODUCT_FLAG_MEMBER, \
102 RUNTIME_PD_PRODUCT_FLAG_MEMBER, \
103 RUNTIME_DIAGNOSTIC_FLAG_MEMBER, \
104 RUNTIME_PD_DIAGNOSTIC_FLAG_MEMBER, \
105 RUNTIME_EXPERIMENTAL_FLAG_MEMBER, \
106 RUNTIME_NOTPRODUCT_FLAG_MEMBER, \
107 RUNTIME_MANAGEABLE_FLAG_MEMBER, \
108 RUNTIME_PRODUCT_RW_FLAG_MEMBER, \
109 RUNTIME_LP64_PRODUCT_FLAG_MEMBER, \
110 IGNORE_RANGE, \
111 IGNORE_CONSTRAINT, \
112 IGNORE_WRITEABLE)
113 RUNTIME_OS_FLAGS(RUNTIME_DEVELOP_FLAG_MEMBER, \
114 RUNTIME_PD_DEVELOP_FLAG_MEMBER, \
115 RUNTIME_PRODUCT_FLAG_MEMBER, \
116 RUNTIME_PD_PRODUCT_FLAG_MEMBER, \
117 RUNTIME_DIAGNOSTIC_FLAG_MEMBER, \
118 RUNTIME_PD_DIAGNOSTIC_FLAG_MEMBER, \
119 RUNTIME_NOTPRODUCT_FLAG_MEMBER, \
120 IGNORE_RANGE, \
121 IGNORE_CONSTRAINT, \
122 IGNORE_WRITEABLE)
123 #if INCLUDE_ALL_GCS
124 G1_FLAGS(RUNTIME_DEVELOP_FLAG_MEMBER, \
125 RUNTIME_PD_DEVELOP_FLAG_MEMBER, \
126 RUNTIME_PRODUCT_FLAG_MEMBER, \
127 RUNTIME_PD_PRODUCT_FLAG_MEMBER, \
128 RUNTIME_DIAGNOSTIC_FLAG_MEMBER, \
129 RUNTIME_PD_DIAGNOSTIC_FLAG_MEMBER, \
130 RUNTIME_EXPERIMENTAL_FLAG_MEMBER, \
131 RUNTIME_NOTPRODUCT_FLAG_MEMBER, \
132 RUNTIME_MANAGEABLE_FLAG_MEMBER, \
133 RUNTIME_PRODUCT_RW_FLAG_MEMBER, \
134 IGNORE_RANGE, \
135 IGNORE_CONSTRAINT, \
136 IGNORE_WRITEABLE)
137 #endif // INCLUDE_ALL_GCS
138 #if INCLUDE_JVMCI
139 JVMCI_FLAGS(JVMCI_DEVELOP_FLAG_MEMBER, \
140 JVMCI_PD_DEVELOP_FLAG_MEMBER, \
141 JVMCI_PRODUCT_FLAG_MEMBER, \
142 JVMCI_PD_PRODUCT_FLAG_MEMBER, \
143 JVMCI_DIAGNOSTIC_FLAG_MEMBER, \
144 JVMCI_PD_DIAGNOSTIC_FLAG_MEMBER, \
145 JVMCI_EXPERIMENTAL_FLAG_MEMBER, \
146 JVMCI_NOTPRODUCT_FLAG_MEMBER, \
147 IGNORE_RANGE, \
148 IGNORE_CONSTRAINT, \
149 IGNORE_WRITEABLE)
150 #endif // INCLUDE_JVMCI
151 #ifdef COMPILER1
152 C1_FLAGS(C1_DEVELOP_FLAG_MEMBER, \
153 C1_PD_DEVELOP_FLAG_MEMBER, \
154 C1_PRODUCT_FLAG_MEMBER, \
155 C1_PD_PRODUCT_FLAG_MEMBER, \
156 C1_DIAGNOSTIC_FLAG_MEMBER, \
157 C1_PD_DIAGNOSTIC_FLAG_MEMBER, \
158 C1_NOTPRODUCT_FLAG_MEMBER, \
159 IGNORE_RANGE, \
160 IGNORE_CONSTRAINT, \
161 IGNORE_WRITEABLE)
162 #endif
163 #ifdef COMPILER2
164 C2_FLAGS(C2_DEVELOP_FLAG_MEMBER, \
165 C2_PD_DEVELOP_FLAG_MEMBER, \
166 C2_PRODUCT_FLAG_MEMBER, \
167 C2_PD_PRODUCT_FLAG_MEMBER, \
168 C2_DIAGNOSTIC_FLAG_MEMBER, \
169 C2_PD_DIAGNOSTIC_FLAG_MEMBER, \
170 C2_EXPERIMENTAL_FLAG_MEMBER, \
171 C2_NOTPRODUCT_FLAG_MEMBER, \
172 IGNORE_RANGE, \
173 IGNORE_CONSTRAINT, \
174 IGNORE_WRITEABLE)
175 #endif
176 ARCH_FLAGS(ARCH_DEVELOP_FLAG_MEMBER, \
177 ARCH_PRODUCT_FLAG_MEMBER, \
178 ARCH_DIAGNOSTIC_FLAG_MEMBER, \
179 ARCH_EXPERIMENTAL_FLAG_MEMBER, \
180 ARCH_NOTPRODUCT_FLAG_MEMBER, \
181 IGNORE_RANGE, \
182 IGNORE_CONSTRAINT, \
183 IGNORE_WRITEABLE)
184 COMMANDLINEFLAG_EXT
185 NUM_CommandLineFlag
186 } CommandLineFlag;
187
188 // Construct enum of Flag_<cmdline-arg>_<type> constants.
189
190 #define FLAG_MEMBER_WITH_TYPE(flag,type) Flag_##flag##_##type
191
192 #define RUNTIME_PRODUCT_FLAG_MEMBER_WITH_TYPE(type, name, value, doc) FLAG_MEMBER_WITH_TYPE(name,type),
193 #define RUNTIME_PD_PRODUCT_FLAG_MEMBER_WITH_TYPE(type, name, doc) FLAG_MEMBER_WITH_TYPE(name,type),
194 #define RUNTIME_DIAGNOSTIC_FLAG_MEMBER_WITH_TYPE(type, name, value, doc) FLAG_MEMBER_WITH_TYPE(name,type),
195 #define RUNTIME_PD_DIAGNOSTIC_FLAG_MEMBER_WITH_TYPE(type, name, doc) FLAG_MEMBER_WITH_TYPE(name,type),
196 #define RUNTIME_EXPERIMENTAL_FLAG_MEMBER_WITH_TYPE(type, name, value, doc) FLAG_MEMBER_WITH_TYPE(name,type),
197 #define RUNTIME_MANAGEABLE_FLAG_MEMBER_WITH_TYPE(type, name, value, doc) FLAG_MEMBER_WITH_TYPE(name,type),
198 #define RUNTIME_PRODUCT_RW_FLAG_MEMBER_WITH_TYPE(type, name, value, doc) FLAG_MEMBER_WITH_TYPE(name,type),
199 #define RUNTIME_DEVELOP_FLAG_MEMBER_WITH_TYPE(type, name, value, doc) FLAG_MEMBER_WITH_TYPE(name,type),
200 #define RUNTIME_PD_DEVELOP_FLAG_MEMBER_WITH_TYPE(type, name, doc) FLAG_MEMBER_WITH_TYPE(name,type),
201 #define RUNTIME_NOTPRODUCT_FLAG_MEMBER_WITH_TYPE(type, name, value, doc) FLAG_MEMBER_WITH_TYPE(name,type),
202
203 #define JVMCI_PRODUCT_FLAG_MEMBER_WITH_TYPE(type, name, value, doc) FLAG_MEMBER_WITH_TYPE(name,type),
204 #define JVMCI_PD_PRODUCT_FLAG_MEMBER_WITH_TYPE(type, name, doc) FLAG_MEMBER_WITH_TYPE(name,type),
205 #define JVMCI_DEVELOP_FLAG_MEMBER_WITH_TYPE(type, name, value, doc) FLAG_MEMBER_WITH_TYPE(name,type),
206 #define JVMCI_PD_DEVELOP_FLAG_MEMBER_WITH_TYPE(type, name, doc) FLAG_MEMBER_WITH_TYPE(name,type),
207 #define JVMCI_DIAGNOSTIC_FLAG_MEMBER_WITH_TYPE(type, name, value, doc) FLAG_MEMBER_WITH_TYPE(name,type),
208 #define JVMCI_PD_DIAGNOSTIC_FLAG_MEMBER_WITH_TYPE(type, name, doc) FLAG_MEMBER_WITH_TYPE(name,type),
209 #define JVMCI_EXPERIMENTAL_FLAG_MEMBER_WITH_TYPE(type, name, value, doc) FLAG_MEMBER_WITH_TYPE(name,type),
210 #define JVMCI_NOTPRODUCT_FLAG_MEMBER_WITH_TYPE(type, name, value, doc) FLAG_MEMBER_WITH_TYPE(name,type),
211
212 #define C1_PRODUCT_FLAG_MEMBER_WITH_TYPE(type, name, value, doc) FLAG_MEMBER_WITH_TYPE(name,type),
213 #define C1_PD_PRODUCT_FLAG_MEMBER_WITH_TYPE(type, name, doc) FLAG_MEMBER_WITH_TYPE(name,type),
214 #define C1_DIAGNOSTIC_FLAG_MEMBER_WITH_TYPE(type, name, value, doc) FLAG_MEMBER_WITH_TYPE(name,type),
215 #define C1_PD_DIAGNOSTIC_FLAG_MEMBER_WITH_TYPE(type, name, doc) FLAG_MEMBER_WITH_TYPE(name,type),
216 #define C1_DEVELOP_FLAG_MEMBER_WITH_TYPE(type, name, value, doc) FLAG_MEMBER_WITH_TYPE(name,type),
217 #define C1_PD_DEVELOP_FLAG_MEMBER_WITH_TYPE(type, name, doc) FLAG_MEMBER_WITH_TYPE(name,type),
218 #define C1_NOTPRODUCT_FLAG_MEMBER_WITH_TYPE(type, name, value, doc) FLAG_MEMBER_WITH_TYPE(name,type),
219
220 #ifdef _LP64
221 #define RUNTIME_LP64_PRODUCT_FLAG_MEMBER_WITH_TYPE(type, name, value, doc) FLAG_MEMBER_WITH_TYPE(name,type),
222 #else
223 #define RUNTIME_LP64_PRODUCT_FLAG_MEMBER_WITH_TYPE(type, name, value, doc) /* flag is constant */
224 #endif // _LP64
225
226 #define C2_PRODUCT_FLAG_MEMBER_WITH_TYPE(type, name, value, doc) FLAG_MEMBER_WITH_TYPE(name,type),
227 #define C2_PD_PRODUCT_FLAG_MEMBER_WITH_TYPE(type, name, doc) FLAG_MEMBER_WITH_TYPE(name,type),
228 #define C2_DIAGNOSTIC_FLAG_MEMBER_WITH_TYPE(type, name, value, doc) FLAG_MEMBER_WITH_TYPE(name,type),
229 #define C2_PD_DIAGNOSTIC_FLAG_MEMBER_WITH_TYPE(type, name, doc) FLAG_MEMBER_WITH_TYPE(name,type),
230 #define C2_EXPERIMENTAL_FLAG_MEMBER_WITH_TYPE(type, name, value, doc) FLAG_MEMBER_WITH_TYPE(name,type),
231 #define C2_DEVELOP_FLAG_MEMBER_WITH_TYPE(type, name, value, doc) FLAG_MEMBER_WITH_TYPE(name,type),
232 #define C2_PD_DEVELOP_FLAG_MEMBER_WITH_TYPE(type, name, doc) FLAG_MEMBER_WITH_TYPE(name,type),
233 #define C2_NOTPRODUCT_FLAG_MEMBER_WITH_TYPE(type, name, value, doc) FLAG_MEMBER_WITH_TYPE(name,type),
234
235 #define ARCH_PRODUCT_FLAG_MEMBER_WITH_TYPE(type, name, value, doc) FLAG_MEMBER_WITH_TYPE(name,type),
236 #define ARCH_DIAGNOSTIC_FLAG_MEMBER_WITH_TYPE(type, name, value, doc) FLAG_MEMBER_WITH_TYPE(name,type),
237 #define ARCH_EXPERIMENTAL_FLAG_MEMBER_WITH_TYPE(type, name, value, doc) FLAG_MEMBER_WITH_TYPE(name,type),
238 #define ARCH_DEVELOP_FLAG_MEMBER_WITH_TYPE(type, name, value, doc) FLAG_MEMBER_WITH_TYPE(name,type),
239 #define ARCH_NOTPRODUCT_FLAG_MEMBER_WITH_TYPE(type, name, value, doc) FLAG_MEMBER_WITH_TYPE(name,type),
240
241 typedef enum {
242 RUNTIME_FLAGS(RUNTIME_DEVELOP_FLAG_MEMBER_WITH_TYPE,
243 RUNTIME_PD_DEVELOP_FLAG_MEMBER_WITH_TYPE,
244 RUNTIME_PRODUCT_FLAG_MEMBER_WITH_TYPE,
245 RUNTIME_PD_PRODUCT_FLAG_MEMBER_WITH_TYPE,
246 RUNTIME_DIAGNOSTIC_FLAG_MEMBER_WITH_TYPE,
247 RUNTIME_PD_DIAGNOSTIC_FLAG_MEMBER_WITH_TYPE,
248 RUNTIME_EXPERIMENTAL_FLAG_MEMBER_WITH_TYPE,
249 RUNTIME_NOTPRODUCT_FLAG_MEMBER_WITH_TYPE,
250 RUNTIME_MANAGEABLE_FLAG_MEMBER_WITH_TYPE,
251 RUNTIME_PRODUCT_RW_FLAG_MEMBER_WITH_TYPE,
252 RUNTIME_LP64_PRODUCT_FLAG_MEMBER_WITH_TYPE,
253 IGNORE_RANGE,
254 IGNORE_CONSTRAINT,
255 IGNORE_WRITEABLE)
256 RUNTIME_OS_FLAGS(RUNTIME_DEVELOP_FLAG_MEMBER_WITH_TYPE,
257 RUNTIME_PD_DEVELOP_FLAG_MEMBER_WITH_TYPE,
258 RUNTIME_PRODUCT_FLAG_MEMBER_WITH_TYPE,
259 RUNTIME_PD_PRODUCT_FLAG_MEMBER_WITH_TYPE,
260 RUNTIME_DIAGNOSTIC_FLAG_MEMBER_WITH_TYPE,
261 RUNTIME_PD_DIAGNOSTIC_FLAG_MEMBER_WITH_TYPE,
262 RUNTIME_NOTPRODUCT_FLAG_MEMBER_WITH_TYPE,
263 IGNORE_RANGE,
264 IGNORE_CONSTRAINT,
265 IGNORE_WRITEABLE)
266 #if INCLUDE_ALL_GCS
267 G1_FLAGS(RUNTIME_DEVELOP_FLAG_MEMBER_WITH_TYPE,
268 RUNTIME_PD_DEVELOP_FLAG_MEMBER_WITH_TYPE,
269 RUNTIME_PRODUCT_FLAG_MEMBER_WITH_TYPE,
270 RUNTIME_PD_PRODUCT_FLAG_MEMBER_WITH_TYPE,
271 RUNTIME_DIAGNOSTIC_FLAG_MEMBER_WITH_TYPE,
272 RUNTIME_PD_DIAGNOSTIC_FLAG_MEMBER_WITH_TYPE,
273 RUNTIME_EXPERIMENTAL_FLAG_MEMBER_WITH_TYPE,
274 RUNTIME_NOTPRODUCT_FLAG_MEMBER_WITH_TYPE,
275 RUNTIME_MANAGEABLE_FLAG_MEMBER_WITH_TYPE,
276 RUNTIME_PRODUCT_RW_FLAG_MEMBER_WITH_TYPE,
277 IGNORE_RANGE,
278 IGNORE_CONSTRAINT,
279 IGNORE_WRITEABLE)
280 #endif // INCLUDE_ALL_GCS
281 #if INCLUDE_JVMCI
282 JVMCI_FLAGS(JVMCI_DEVELOP_FLAG_MEMBER_WITH_TYPE,
283 JVMCI_PD_DEVELOP_FLAG_MEMBER_WITH_TYPE,
284 JVMCI_PRODUCT_FLAG_MEMBER_WITH_TYPE,
285 JVMCI_PD_PRODUCT_FLAG_MEMBER_WITH_TYPE,
286 JVMCI_DIAGNOSTIC_FLAG_MEMBER_WITH_TYPE,
287 JVMCI_PD_DIAGNOSTIC_FLAG_MEMBER_WITH_TYPE,
288 JVMCI_EXPERIMENTAL_FLAG_MEMBER_WITH_TYPE,
289 JVMCI_NOTPRODUCT_FLAG_MEMBER_WITH_TYPE,
290 IGNORE_RANGE,
291 IGNORE_CONSTRAINT,
292 IGNORE_WRITEABLE)
293 #endif // INCLUDE_JVMCI
294 #ifdef COMPILER1
295 C1_FLAGS(C1_DEVELOP_FLAG_MEMBER_WITH_TYPE,
296 C1_PD_DEVELOP_FLAG_MEMBER_WITH_TYPE,
297 C1_PRODUCT_FLAG_MEMBER_WITH_TYPE,
298 C1_PD_PRODUCT_FLAG_MEMBER_WITH_TYPE,
299 C1_DIAGNOSTIC_FLAG_MEMBER_WITH_TYPE,
300 C1_PD_DIAGNOSTIC_FLAG_MEMBER_WITH_TYPE,
301 C1_NOTPRODUCT_FLAG_MEMBER_WITH_TYPE,
302 IGNORE_RANGE,
303 IGNORE_CONSTRAINT,
304 IGNORE_WRITEABLE)
305 #endif
306 #ifdef COMPILER2
307 C2_FLAGS(C2_DEVELOP_FLAG_MEMBER_WITH_TYPE,
308 C2_PD_DEVELOP_FLAG_MEMBER_WITH_TYPE,
309 C2_PRODUCT_FLAG_MEMBER_WITH_TYPE,
310 C2_PD_PRODUCT_FLAG_MEMBER_WITH_TYPE,
311 C2_DIAGNOSTIC_FLAG_MEMBER_WITH_TYPE,
312 C2_PD_DIAGNOSTIC_FLAG_MEMBER_WITH_TYPE,
313 C2_EXPERIMENTAL_FLAG_MEMBER_WITH_TYPE,
314 C2_NOTPRODUCT_FLAG_MEMBER_WITH_TYPE,
315 IGNORE_RANGE,
316 IGNORE_CONSTRAINT,
317 IGNORE_WRITEABLE)
318 #endif
319 ARCH_FLAGS(ARCH_DEVELOP_FLAG_MEMBER_WITH_TYPE,
320 ARCH_PRODUCT_FLAG_MEMBER_WITH_TYPE,
321 ARCH_DIAGNOSTIC_FLAG_MEMBER_WITH_TYPE,
322 ARCH_EXPERIMENTAL_FLAG_MEMBER_WITH_TYPE,
323 ARCH_NOTPRODUCT_FLAG_MEMBER_WITH_TYPE,
324 IGNORE_RANGE,
325 IGNORE_CONSTRAINT,
326 IGNORE_WRITEABLE)
327 COMMANDLINEFLAGWITHTYPE_EXT
328 NUM_CommandLineFlagWithType
329 } CommandLineFlagWithType;
330
331 #define FLAG_IS_DEFAULT(name) (CommandLineFlagsEx::is_default(FLAG_MEMBER(name)))
332 #define FLAG_IS_ERGO(name) (CommandLineFlagsEx::is_ergo(FLAG_MEMBER(name)))
|