src/share/vm/runtime/commandLineFlagRangeList.cpp

Print this page
rev 11264 : 8150900: Implement diagnostic_pd
Reviewed-by: twisti, gziemski, kevinw


 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;