261 CommandLineFlagRangeList::add(new CommandLineFlagRange_uintx(name, min, max));
262 }
263 void emit_range_uint64_t(const char* name, uint64_t min, uint64_t max) {
264 CommandLineFlagRangeList::add(new CommandLineFlagRange_uint64_t(name, min, max));
265 }
266 void emit_range_size_t(const char* name, size_t min, size_t max) {
267 CommandLineFlagRangeList::add(new CommandLineFlagRange_size_t(name, min, max));
268 }
269 void emit_range_double(const char* name, double min, double max) {
270 CommandLineFlagRangeList::add(new CommandLineFlagRange_double(name, min, max));
271 }
272
273 // Generate code to call emit_range_xxx function
274 #define EMIT_RANGE_PRODUCT_FLAG(type, name, value, doc) ); emit_range_##type(#name
275 #define EMIT_RANGE_COMMERCIAL_FLAG(type, name, value, doc) ); emit_range_##type(#name
276 #define EMIT_RANGE_DIAGNOSTIC_FLAG(type, name, value, doc) ); emit_range_##type(#name
277 #define EMIT_RANGE_EXPERIMENTAL_FLAG(type, name, value, doc) ); emit_range_##type(#name
278 #define EMIT_RANGE_MANAGEABLE_FLAG(type, name, value, doc) ); emit_range_##type(#name
279 #define EMIT_RANGE_PRODUCT_RW_FLAG(type, name, value, doc) ); emit_range_##type(#name
280 #define EMIT_RANGE_PD_PRODUCT_FLAG(type, name, doc) ); emit_range_##type(#name
281 #define EMIT_RANGE_DEVELOPER_FLAG(type, name, value, doc) ); emit_range_##type(#name
282 #define EMIT_RANGE_PD_DEVELOPER_FLAG(type, name, doc) ); emit_range_##type(#name
283 #define EMIT_RANGE_NOTPRODUCT_FLAG(type, name, value, doc) ); emit_range_##type(#name
284 #define EMIT_RANGE_LP64_PRODUCT_FLAG(type, name, value, doc) ); emit_range_##type(#name
285
286 // Generate func argument to pass into emit_range_xxx functions
287 #define EMIT_RANGE_CHECK(a, b) , a, b
288
289 #define INITIAL_RANGES_SIZE 379
290 GrowableArray<CommandLineFlagRange*>* CommandLineFlagRangeList::_ranges = NULL;
291
292 // Check the ranges of all flags that have them
293 void CommandLineFlagRangeList::init(void) {
294
295 _ranges = new (ResourceObj::C_HEAP, mtArguments) GrowableArray<CommandLineFlagRange*>(INITIAL_RANGES_SIZE, true);
296
297 emit_range_no(NULL RUNTIME_FLAGS(EMIT_RANGE_DEVELOPER_FLAG,
298 EMIT_RANGE_PD_DEVELOPER_FLAG,
299 EMIT_RANGE_PRODUCT_FLAG,
300 EMIT_RANGE_PD_PRODUCT_FLAG,
301 EMIT_RANGE_DIAGNOSTIC_FLAG,
302 EMIT_RANGE_EXPERIMENTAL_FLAG,
303 EMIT_RANGE_NOTPRODUCT_FLAG,
304 EMIT_RANGE_MANAGEABLE_FLAG,
305 EMIT_RANGE_PRODUCT_RW_FLAG,
306 EMIT_RANGE_LP64_PRODUCT_FLAG,
307 EMIT_RANGE_CHECK,
308 IGNORE_CONSTRAINT,
309 IGNORE_WRITEABLE));
310
311 EMIT_RANGES_FOR_GLOBALS_EXT
312
313 emit_range_no(NULL ARCH_FLAGS(EMIT_RANGE_DEVELOPER_FLAG,
314 EMIT_RANGE_PRODUCT_FLAG,
315 EMIT_RANGE_DIAGNOSTIC_FLAG,
316 EMIT_RANGE_EXPERIMENTAL_FLAG,
317 EMIT_RANGE_NOTPRODUCT_FLAG,
318 EMIT_RANGE_CHECK,
319 IGNORE_CONSTRAINT,
320 IGNORE_WRITEABLE));
321
322 #if INCLUDE_JVMCI
323 emit_range_no(NULL JVMCI_FLAGS(EMIT_RANGE_DEVELOPER_FLAG,
324 EMIT_RANGE_PD_DEVELOPER_FLAG,
325 EMIT_RANGE_PRODUCT_FLAG,
326 EMIT_RANGE_PD_PRODUCT_FLAG,
327 EMIT_RANGE_DIAGNOSTIC_FLAG,
328 EMIT_RANGE_EXPERIMENTAL_FLAG,
329 EMIT_RANGE_NOTPRODUCT_FLAG,
330 EMIT_RANGE_CHECK,
331 IGNORE_CONSTRAINT,
332 IGNORE_WRITEABLE));
333 #endif // INCLUDE_JVMCI
334
335 #ifdef COMPILER1
336 emit_range_no(NULL C1_FLAGS(EMIT_RANGE_DEVELOPER_FLAG,
337 EMIT_RANGE_PD_DEVELOPER_FLAG,
338 EMIT_RANGE_PRODUCT_FLAG,
339 EMIT_RANGE_PD_PRODUCT_FLAG,
340 EMIT_RANGE_DIAGNOSTIC_FLAG,
341 EMIT_RANGE_NOTPRODUCT_FLAG,
342 EMIT_RANGE_CHECK,
343 IGNORE_CONSTRAINT,
344 IGNORE_WRITEABLE));
345 #endif // COMPILER1
346
347 #ifdef COMPILER2
348 emit_range_no(NULL C2_FLAGS(EMIT_RANGE_DEVELOPER_FLAG,
349 EMIT_RANGE_PD_DEVELOPER_FLAG,
350 EMIT_RANGE_PRODUCT_FLAG,
351 EMIT_RANGE_PD_PRODUCT_FLAG,
352 EMIT_RANGE_DIAGNOSTIC_FLAG,
353 EMIT_RANGE_EXPERIMENTAL_FLAG,
354 EMIT_RANGE_NOTPRODUCT_FLAG,
355 EMIT_RANGE_CHECK,
356 IGNORE_CONSTRAINT,
357 IGNORE_WRITEABLE));
358 #endif // COMPILER2
359
360 #if INCLUDE_ALL_GCS
361 emit_range_no(NULL G1_FLAGS(EMIT_RANGE_DEVELOPER_FLAG,
362 EMIT_RANGE_PD_DEVELOPER_FLAG,
363 EMIT_RANGE_PRODUCT_FLAG,
364 EMIT_RANGE_PD_PRODUCT_FLAG,
365 EMIT_RANGE_DIAGNOSTIC_FLAG,
366 EMIT_RANGE_EXPERIMENTAL_FLAG,
367 EMIT_RANGE_NOTPRODUCT_FLAG,
368 EMIT_RANGE_MANAGEABLE_FLAG,
369 EMIT_RANGE_PRODUCT_RW_FLAG,
370 EMIT_RANGE_CHECK,
371 IGNORE_CONSTRAINT,
372 IGNORE_WRITEABLE));
373 #endif // INCLUDE_ALL_GCS
374 }
375
376 CommandLineFlagRange* CommandLineFlagRangeList::find(const char* name) {
377 CommandLineFlagRange* found = NULL;
378 for (int i=0; i<length(); i++) {
379 CommandLineFlagRange* range = at(i);
380 if (strcmp(range->name(), name) == 0) {
381 found = range;
382 break;
383 }
384 }
385 return found;
|
261 CommandLineFlagRangeList::add(new CommandLineFlagRange_uintx(name, min, max));
262 }
263 void emit_range_uint64_t(const char* name, uint64_t min, uint64_t max) {
264 CommandLineFlagRangeList::add(new CommandLineFlagRange_uint64_t(name, min, max));
265 }
266 void emit_range_size_t(const char* name, size_t min, size_t max) {
267 CommandLineFlagRangeList::add(new CommandLineFlagRange_size_t(name, min, max));
268 }
269 void emit_range_double(const char* name, double min, double max) {
270 CommandLineFlagRangeList::add(new CommandLineFlagRange_double(name, min, max));
271 }
272
273 // Generate code to call emit_range_xxx function
274 #define EMIT_RANGE_PRODUCT_FLAG(type, name, value, doc) ); emit_range_##type(#name
275 #define EMIT_RANGE_COMMERCIAL_FLAG(type, name, value, doc) ); emit_range_##type(#name
276 #define EMIT_RANGE_DIAGNOSTIC_FLAG(type, name, value, doc) ); emit_range_##type(#name
277 #define EMIT_RANGE_EXPERIMENTAL_FLAG(type, name, value, doc) ); emit_range_##type(#name
278 #define EMIT_RANGE_MANAGEABLE_FLAG(type, name, value, doc) ); emit_range_##type(#name
279 #define EMIT_RANGE_PRODUCT_RW_FLAG(type, name, value, doc) ); emit_range_##type(#name
280 #define EMIT_RANGE_PD_PRODUCT_FLAG(type, name, doc) ); emit_range_##type(#name
281 #define EMIT_RANGE_PD_DIAGNOSTIC_FLAG(type, name, doc) ); emit_range_##type(#name
282 #define EMIT_RANGE_DEVELOPER_FLAG(type, name, value, doc) ); emit_range_##type(#name
283 #define EMIT_RANGE_PD_DEVELOPER_FLAG(type, name, doc) ); emit_range_##type(#name
284 #define EMIT_RANGE_NOTPRODUCT_FLAG(type, name, value, doc) ); emit_range_##type(#name
285 #define EMIT_RANGE_LP64_PRODUCT_FLAG(type, name, value, doc) ); emit_range_##type(#name
286
287 // Generate func argument to pass into emit_range_xxx functions
288 #define EMIT_RANGE_CHECK(a, b) , a, b
289
290 #define INITIAL_RANGES_SIZE 379
291 GrowableArray<CommandLineFlagRange*>* CommandLineFlagRangeList::_ranges = NULL;
292
293 // Check the ranges of all flags that have them
294 void CommandLineFlagRangeList::init(void) {
295
296 _ranges = new (ResourceObj::C_HEAP, mtArguments) GrowableArray<CommandLineFlagRange*>(INITIAL_RANGES_SIZE, true);
297
298 emit_range_no(NULL RUNTIME_FLAGS(EMIT_RANGE_DEVELOPER_FLAG,
299 EMIT_RANGE_PD_DEVELOPER_FLAG,
300 EMIT_RANGE_PRODUCT_FLAG,
301 EMIT_RANGE_PD_PRODUCT_FLAG,
302 EMIT_RANGE_DIAGNOSTIC_FLAG,
303 EMIT_RANGE_PD_DIAGNOSTIC_FLAG,
304 EMIT_RANGE_EXPERIMENTAL_FLAG,
305 EMIT_RANGE_NOTPRODUCT_FLAG,
306 EMIT_RANGE_MANAGEABLE_FLAG,
307 EMIT_RANGE_PRODUCT_RW_FLAG,
308 EMIT_RANGE_LP64_PRODUCT_FLAG,
309 EMIT_RANGE_CHECK,
310 IGNORE_CONSTRAINT,
311 IGNORE_WRITEABLE));
312
313 EMIT_RANGES_FOR_GLOBALS_EXT
314
315 emit_range_no(NULL ARCH_FLAGS(EMIT_RANGE_DEVELOPER_FLAG,
316 EMIT_RANGE_PRODUCT_FLAG,
317 EMIT_RANGE_DIAGNOSTIC_FLAG,
318 EMIT_RANGE_EXPERIMENTAL_FLAG,
319 EMIT_RANGE_NOTPRODUCT_FLAG,
320 EMIT_RANGE_CHECK,
321 IGNORE_CONSTRAINT,
322 IGNORE_WRITEABLE));
323
324 #if INCLUDE_JVMCI
325 emit_range_no(NULL JVMCI_FLAGS(EMIT_RANGE_DEVELOPER_FLAG,
326 EMIT_RANGE_PD_DEVELOPER_FLAG,
327 EMIT_RANGE_PRODUCT_FLAG,
328 EMIT_RANGE_PD_PRODUCT_FLAG,
329 EMIT_RANGE_DIAGNOSTIC_FLAG,
330 EMIT_RANGE_PD_DIAGNOSTIC_FLAG,
331 EMIT_RANGE_EXPERIMENTAL_FLAG,
332 EMIT_RANGE_NOTPRODUCT_FLAG,
333 EMIT_RANGE_CHECK,
334 IGNORE_CONSTRAINT,
335 IGNORE_WRITEABLE));
336 #endif // INCLUDE_JVMCI
337
338 #ifdef COMPILER1
339 emit_range_no(NULL C1_FLAGS(EMIT_RANGE_DEVELOPER_FLAG,
340 EMIT_RANGE_PD_DEVELOPER_FLAG,
341 EMIT_RANGE_PRODUCT_FLAG,
342 EMIT_RANGE_PD_PRODUCT_FLAG,
343 EMIT_RANGE_DIAGNOSTIC_FLAG,
344 EMIT_RANGE_PD_DIAGNOSTIC_FLAG,
345 EMIT_RANGE_NOTPRODUCT_FLAG,
346 EMIT_RANGE_CHECK,
347 IGNORE_CONSTRAINT,
348 IGNORE_WRITEABLE));
349 #endif // COMPILER1
350
351 #ifdef COMPILER2
352 emit_range_no(NULL C2_FLAGS(EMIT_RANGE_DEVELOPER_FLAG,
353 EMIT_RANGE_PD_DEVELOPER_FLAG,
354 EMIT_RANGE_PRODUCT_FLAG,
355 EMIT_RANGE_PD_PRODUCT_FLAG,
356 EMIT_RANGE_DIAGNOSTIC_FLAG,
357 EMIT_RANGE_PD_DIAGNOSTIC_FLAG,
358 EMIT_RANGE_EXPERIMENTAL_FLAG,
359 EMIT_RANGE_NOTPRODUCT_FLAG,
360 EMIT_RANGE_CHECK,
361 IGNORE_CONSTRAINT,
362 IGNORE_WRITEABLE));
363 #endif // COMPILER2
364
365 #if INCLUDE_ALL_GCS
366 emit_range_no(NULL G1_FLAGS(EMIT_RANGE_DEVELOPER_FLAG,
367 EMIT_RANGE_PD_DEVELOPER_FLAG,
368 EMIT_RANGE_PRODUCT_FLAG,
369 EMIT_RANGE_PD_PRODUCT_FLAG,
370 EMIT_RANGE_DIAGNOSTIC_FLAG,
371 EMIT_RANGE_PD_DIAGNOSTIC_FLAG,
372 EMIT_RANGE_EXPERIMENTAL_FLAG,
373 EMIT_RANGE_NOTPRODUCT_FLAG,
374 EMIT_RANGE_MANAGEABLE_FLAG,
375 EMIT_RANGE_PRODUCT_RW_FLAG,
376 EMIT_RANGE_CHECK,
377 IGNORE_CONSTRAINT,
378 IGNORE_WRITEABLE));
379 #endif // INCLUDE_ALL_GCS
380 }
381
382 CommandLineFlagRange* CommandLineFlagRangeList::find(const char* name) {
383 CommandLineFlagRange* found = NULL;
384 for (int i=0; i<length(); i++) {
385 CommandLineFlagRange* range = at(i);
386 if (strcmp(range->name(), name) == 0) {
387 found = range;
388 break;
389 }
390 }
391 return found;
|