215 #define EMIT_CONSTRAINT_PD_DEVELOPER_FLAG(type, name, doc) ); emit_constraint_##type(#name |
215 #define EMIT_CONSTRAINT_PD_DEVELOPER_FLAG(type, name, doc) ); emit_constraint_##type(#name |
216 #define EMIT_CONSTRAINT_NOTPRODUCT_FLAG(type, name, value, doc) ); emit_constraint_##type(#name |
216 #define EMIT_CONSTRAINT_NOTPRODUCT_FLAG(type, name, value, doc) ); emit_constraint_##type(#name |
217 #define EMIT_CONSTRAINT_LP64_PRODUCT_FLAG(type, name, value, doc) ); emit_constraint_##type(#name |
217 #define EMIT_CONSTRAINT_LP64_PRODUCT_FLAG(type, name, value, doc) ); emit_constraint_##type(#name |
218 |
218 |
219 // Generate func argument to pass into emit_constraint_xxx functions |
219 // Generate func argument to pass into emit_constraint_xxx functions |
220 #define EMIT_CONSTRAINT_CHECK(func, type) , func, CommandLineFlagConstraint::type |
220 #define EMIT_CONSTRAINT_CHECK(func, type) , func, CommandLineFlagConstraint::type |
221 |
221 |
222 // the "name" argument must be a string literal |
222 // the "name" argument must be a string literal |
223 #define INITIAL_CONSTRAINTS_SIZE 72 |
223 #define INITIAL_CONSTRAINTS_SIZE 72 |
224 GrowableArray<CommandLineFlagConstraint*>* CommandLineFlagConstraintList::_constraints = NULL; |
224 GrowableArray<CommandLineFlagConstraint*>* CommandLineFlagConstraintList::_constraints = NULL; |
225 CommandLineFlagConstraint::ConstraintType CommandLineFlagConstraintList::_validating_type = CommandLineFlagConstraint::AtParse; |
225 CommandLineFlagConstraint::ConstraintType CommandLineFlagConstraintList::_validating_type = CommandLineFlagConstraint::AtParse; |
237 EMIT_CONSTRAINT_NOTPRODUCT_FLAG, |
237 EMIT_CONSTRAINT_NOTPRODUCT_FLAG, |
238 EMIT_CONSTRAINT_MANAGEABLE_FLAG, |
238 EMIT_CONSTRAINT_MANAGEABLE_FLAG, |
239 EMIT_CONSTRAINT_PRODUCT_RW_FLAG, |
239 EMIT_CONSTRAINT_PRODUCT_RW_FLAG, |
240 EMIT_CONSTRAINT_LP64_PRODUCT_FLAG, |
240 EMIT_CONSTRAINT_LP64_PRODUCT_FLAG, |
241 IGNORE_RANGE, |
241 IGNORE_RANGE, |
242 EMIT_CONSTRAINT_CHECK)); |
242 EMIT_CONSTRAINT_CHECK, |
|
243 IGNORE_WRITEABLE)); |
243 |
244 |
244 EMIT_CONSTRAINTS_FOR_GLOBALS_EXT |
245 EMIT_CONSTRAINTS_FOR_GLOBALS_EXT |
245 |
246 |
246 emit_constraint_no(NULL ARCH_FLAGS(EMIT_CONSTRAINT_DEVELOPER_FLAG, |
247 emit_constraint_no(NULL ARCH_FLAGS(EMIT_CONSTRAINT_DEVELOPER_FLAG, |
247 EMIT_CONSTRAINT_PRODUCT_FLAG, |
248 EMIT_CONSTRAINT_PRODUCT_FLAG, |
248 EMIT_CONSTRAINT_DIAGNOSTIC_FLAG, |
249 EMIT_CONSTRAINT_DIAGNOSTIC_FLAG, |
249 EMIT_CONSTRAINT_EXPERIMENTAL_FLAG, |
250 EMIT_CONSTRAINT_EXPERIMENTAL_FLAG, |
250 EMIT_CONSTRAINT_NOTPRODUCT_FLAG, |
251 EMIT_CONSTRAINT_NOTPRODUCT_FLAG, |
251 IGNORE_RANGE, |
252 IGNORE_RANGE, |
252 EMIT_CONSTRAINT_CHECK)); |
253 EMIT_CONSTRAINT_CHECK, |
|
254 IGNORE_WRITEABLE)); |
253 |
255 |
254 |
256 |
255 #ifdef COMPILER1 |
257 #ifdef COMPILER1 |
256 emit_constraint_no(NULL C1_FLAGS(EMIT_CONSTRAINT_DEVELOPER_FLAG, |
258 emit_constraint_no(NULL C1_FLAGS(EMIT_CONSTRAINT_DEVELOPER_FLAG, |
257 EMIT_CONSTRAINT_PD_DEVELOPER_FLAG, |
259 EMIT_CONSTRAINT_PD_DEVELOPER_FLAG, |
258 EMIT_CONSTRAINT_PRODUCT_FLAG, |
260 EMIT_CONSTRAINT_PRODUCT_FLAG, |
259 EMIT_CONSTRAINT_PD_PRODUCT_FLAG, |
261 EMIT_CONSTRAINT_PD_PRODUCT_FLAG, |
260 EMIT_CONSTRAINT_DIAGNOSTIC_FLAG, |
262 EMIT_CONSTRAINT_DIAGNOSTIC_FLAG, |
261 EMIT_CONSTRAINT_NOTPRODUCT_FLAG, |
263 EMIT_CONSTRAINT_NOTPRODUCT_FLAG, |
262 IGNORE_RANGE, |
264 IGNORE_RANGE, |
263 EMIT_CONSTRAINT_CHECK)); |
265 EMIT_CONSTRAINT_CHECK, |
|
266 IGNORE_WRITEABLE)); |
264 #endif // COMPILER1 |
267 #endif // COMPILER1 |
265 |
268 |
266 #ifdef COMPILER2 |
269 #ifdef COMPILER2 |
267 emit_constraint_no(NULL C2_FLAGS(EMIT_CONSTRAINT_DEVELOPER_FLAG, |
270 emit_constraint_no(NULL C2_FLAGS(EMIT_CONSTRAINT_DEVELOPER_FLAG, |
268 EMIT_CONSTRAINT_PD_DEVELOPER_FLAG, |
271 EMIT_CONSTRAINT_PD_DEVELOPER_FLAG, |
270 EMIT_CONSTRAINT_PD_PRODUCT_FLAG, |
273 EMIT_CONSTRAINT_PD_PRODUCT_FLAG, |
271 EMIT_CONSTRAINT_DIAGNOSTIC_FLAG, |
274 EMIT_CONSTRAINT_DIAGNOSTIC_FLAG, |
272 EMIT_CONSTRAINT_EXPERIMENTAL_FLAG, |
275 EMIT_CONSTRAINT_EXPERIMENTAL_FLAG, |
273 EMIT_CONSTRAINT_NOTPRODUCT_FLAG, |
276 EMIT_CONSTRAINT_NOTPRODUCT_FLAG, |
274 IGNORE_RANGE, |
277 IGNORE_RANGE, |
275 EMIT_CONSTRAINT_CHECK)); |
278 EMIT_CONSTRAINT_CHECK, |
|
279 IGNORE_WRITEABLE)); |
276 #endif // COMPILER2 |
280 #endif // COMPILER2 |
277 |
281 |
278 #if INCLUDE_ALL_GCS |
282 #if INCLUDE_ALL_GCS |
279 emit_constraint_no(NULL G1_FLAGS(EMIT_CONSTRAINT_DEVELOPER_FLAG, |
283 emit_constraint_no(NULL G1_FLAGS(EMIT_CONSTRAINT_DEVELOPER_FLAG, |
280 EMIT_CONSTRAINT_PD_DEVELOPER_FLAG, |
284 EMIT_CONSTRAINT_PD_DEVELOPER_FLAG, |
284 EMIT_CONSTRAINT_EXPERIMENTAL_FLAG, |
288 EMIT_CONSTRAINT_EXPERIMENTAL_FLAG, |
285 EMIT_CONSTRAINT_NOTPRODUCT_FLAG, |
289 EMIT_CONSTRAINT_NOTPRODUCT_FLAG, |
286 EMIT_CONSTRAINT_MANAGEABLE_FLAG, |
290 EMIT_CONSTRAINT_MANAGEABLE_FLAG, |
287 EMIT_CONSTRAINT_PRODUCT_RW_FLAG, |
291 EMIT_CONSTRAINT_PRODUCT_RW_FLAG, |
288 IGNORE_RANGE, |
292 IGNORE_RANGE, |
289 EMIT_CONSTRAINT_CHECK)); |
293 EMIT_CONSTRAINT_CHECK, |
|
294 IGNORE_WRITEABLE)); |
290 #endif // INCLUDE_ALL_GCS |
295 #endif // INCLUDE_ALL_GCS |
291 } |
296 } |
292 |
297 |
293 CommandLineFlagConstraint* CommandLineFlagConstraintList::find(const char* name) { |
298 CommandLineFlagConstraint* CommandLineFlagConstraintList::find(const char* name) { |
294 CommandLineFlagConstraint* found = NULL; |
299 CommandLineFlagConstraint* found = NULL; |