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, mtInternal) 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 310 EMIT_RANGES_FOR_GLOBALS_EXT 311 312 emit_range_no(NULL ARCH_FLAGS(EMIT_RANGE_DEVELOPER_FLAG, 313 EMIT_RANGE_PRODUCT_FLAG, 314 EMIT_RANGE_DIAGNOSTIC_FLAG, 315 EMIT_RANGE_EXPERIMENTAL_FLAG, 316 EMIT_RANGE_NOTPRODUCT_FLAG, 317 EMIT_RANGE_CHECK, 318 IGNORE_CONSTRAINT)); 319 320 #if INCLUDE_JVMCI 321 emit_range_no(NULL JVMCI_FLAGS(EMIT_RANGE_DEVELOPER_FLAG, 322 EMIT_RANGE_PD_DEVELOPER_FLAG, 323 EMIT_RANGE_PRODUCT_FLAG, 324 EMIT_RANGE_PD_PRODUCT_FLAG, 325 EMIT_RANGE_DIAGNOSTIC_FLAG, 326 EMIT_RANGE_EXPERIMENTAL_FLAG, 327 EMIT_RANGE_NOTPRODUCT_FLAG, 328 EMIT_RANGE_CHECK, 329 IGNORE_CONSTRAINT)); 330 #endif // INCLUDE_JVMCI 331 332 #ifdef COMPILER1 333 emit_range_no(NULL C1_FLAGS(EMIT_RANGE_DEVELOPER_FLAG, 334 EMIT_RANGE_PD_DEVELOPER_FLAG, 335 EMIT_RANGE_PRODUCT_FLAG, 336 EMIT_RANGE_PD_PRODUCT_FLAG, 337 EMIT_RANGE_DIAGNOSTIC_FLAG, 338 EMIT_RANGE_NOTPRODUCT_FLAG, 339 EMIT_RANGE_CHECK, 340 IGNORE_CONSTRAINT)); 341 #endif // COMPILER1 342 343 #ifdef COMPILER2 344 emit_range_no(NULL C2_FLAGS(EMIT_RANGE_DEVELOPER_FLAG, 345 EMIT_RANGE_PD_DEVELOPER_FLAG, 346 EMIT_RANGE_PRODUCT_FLAG, 347 EMIT_RANGE_PD_PRODUCT_FLAG, 348 EMIT_RANGE_DIAGNOSTIC_FLAG, 349 EMIT_RANGE_EXPERIMENTAL_FLAG, 350 EMIT_RANGE_NOTPRODUCT_FLAG, 351 EMIT_RANGE_CHECK, 352 IGNORE_CONSTRAINT)); 353 #endif // COMPILER2 354 355 #if INCLUDE_ALL_GCS 356 emit_range_no(NULL G1_FLAGS(EMIT_RANGE_DEVELOPER_FLAG, 357 EMIT_RANGE_PD_DEVELOPER_FLAG, 358 EMIT_RANGE_PRODUCT_FLAG, 359 EMIT_RANGE_PD_PRODUCT_FLAG, 360 EMIT_RANGE_DIAGNOSTIC_FLAG, 361 EMIT_RANGE_EXPERIMENTAL_FLAG, 362 EMIT_RANGE_NOTPRODUCT_FLAG, 363 EMIT_RANGE_MANAGEABLE_FLAG, 364 EMIT_RANGE_PRODUCT_RW_FLAG, 365 EMIT_RANGE_CHECK, 366 IGNORE_CONSTRAINT)); 367 #endif // INCLUDE_ALL_GCS 368 } 369 370 CommandLineFlagRange* CommandLineFlagRangeList::find(const char* name) { 371 CommandLineFlagRange* found = NULL; 372 for (int i=0; i<length(); i++) { 373 CommandLineFlagRange* range = at(i); 374 if (strcmp(range->name(), name) == 0) { 375 found = range; 376 break; 377 } 378 } 379 return found; 380 } | 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, mtInternal) 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 312 EMIT_RANGES_FOR_GLOBALS_EXT 313 314 emit_range_no(NULL ARCH_FLAGS(EMIT_RANGE_DEVELOPER_FLAG, 315 EMIT_RANGE_PRODUCT_FLAG, 316 EMIT_RANGE_DIAGNOSTIC_FLAG, 317 EMIT_RANGE_EXPERIMENTAL_FLAG, 318 EMIT_RANGE_NOTPRODUCT_FLAG, 319 EMIT_RANGE_CHECK, 320 IGNORE_CONSTRAINT)); 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_PD_DIAGNOSTIC_FLAG, 329 EMIT_RANGE_EXPERIMENTAL_FLAG, 330 EMIT_RANGE_NOTPRODUCT_FLAG, 331 EMIT_RANGE_CHECK, 332 IGNORE_CONSTRAINT)); 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_PD_DIAGNOSTIC_FLAG, 342 EMIT_RANGE_NOTPRODUCT_FLAG, 343 EMIT_RANGE_CHECK, 344 IGNORE_CONSTRAINT)); 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_PD_DIAGNOSTIC_FLAG, 354 EMIT_RANGE_EXPERIMENTAL_FLAG, 355 EMIT_RANGE_NOTPRODUCT_FLAG, 356 EMIT_RANGE_CHECK, 357 IGNORE_CONSTRAINT)); 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_PD_DIAGNOSTIC_FLAG, 367 EMIT_RANGE_EXPERIMENTAL_FLAG, 368 EMIT_RANGE_NOTPRODUCT_FLAG, 369 EMIT_RANGE_MANAGEABLE_FLAG, 370 EMIT_RANGE_PRODUCT_RW_FLAG, 371 EMIT_RANGE_CHECK, 372 IGNORE_CONSTRAINT)); 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; 386 } |