< prev index next >

src/share/vm/runtime/arguments.cpp

Print this page




 392 // Return true if "v" is less than "other", where "other" may be "undefined".
 393 static bool version_less_than(JDK_Version v, JDK_Version other) {
 394   assert(!v.is_undefined(), "must be defined");
 395   if (!other.is_undefined() && v.compare(other) >= 0) {
 396     return false;
 397   } else {
 398     return true;
 399   }
 400 }
 401 
 402 static bool lookup_special_flag(const char *flag_name, SpecialFlag& flag) {
 403   for (size_t i = 0; special_jvm_flags[i].name != NULL; i++) {
 404     if ((strcmp(special_jvm_flags[i].name, flag_name) == 0)) {
 405       flag = special_jvm_flags[i];
 406       return true;
 407     }
 408   }
 409   return false;
 410 }
 411 
 412 // Returns 1 if the flag is special and jdk version is in the range specified.
 413 //     In this case the 'version' buffer is filled in with the version number when
 414 //     the flag became special.
 415 // Returns -1 if the flag is the wrong kind of special - expired or (check_deprecated & obsolete).
 416 // Returns 0 if the flag is not special.
 417 // "flag_name" is a flag name stripped of '+', '-', and '='.
 418 static int is_special_flag(bool check_deprecated, const char *flag_name, JDK_Version* version) {








 419   assert(version != NULL, "Must provide a version buffer");
 420   SpecialFlag flag;
 421   if (lookup_special_flag(flag_name, flag)) {
 422     if (check_deprecated && !flag.deprecated_in.is_undefined()) {
 423       if (version_less_than(JDK_Version::current(), flag.obsolete_in) &&
 424           version_less_than(JDK_Version::current(), flag.expired_in)) {
 425         *version = flag.deprecated_in;
 426         return 1;
 427       } else {
 428         return -1;
 429       }
 430     } else if (!check_deprecated && !flag.obsolete_in.is_undefined()) {
 431        if (version_less_than(JDK_Version::current(), flag.expired_in)) {
 432         *version = flag.obsolete_in;
 433         return 1;
 434       } else {
 435         return -1;
 436       }
 437     }
 438   }
 439   return 0;
 440 }
 441 
 442 bool Arguments::is_obsolete_flag(const char *flag_name, JDK_Version* version) {
 443   return (is_special_flag(false, flag_name, version) == 1);
 444 }
 445 
 446 int Arguments::is_deprecated_flag(const char *flag_name, JDK_Version* version) {
 447   return is_special_flag(true, flag_name, version);
 448 }
 449 
 450 const char* Arguments::real_flag_name(const char *flag_name) {
 451   for (size_t i = 0; aliased_jvm_flags[i].alias_name != NULL; i++) {
 452     const AliasedFlag& flag_status = aliased_jvm_flags[i];
 453     if (strcmp(flag_status.alias_name, flag_name) == 0) {
 454         return flag_status.real_name;
 455     }
 456   }
 457   return flag_name;
 458 }
 459 
 460 #ifndef PRODUCT
 461 static bool lookup_special_flag(const char *flag_name, size_t skip_index) {
 462   for (size_t i = 0; special_jvm_flags[i].name != NULL; i++) {
 463     if ((i != skip_index) && (strcmp(special_jvm_flags[i].name, flag_name) == 0)) {
 464       return true;
 465     }
 466   }
 467   return false;




 392 // Return true if "v" is less than "other", where "other" may be "undefined".
 393 static bool version_less_than(JDK_Version v, JDK_Version other) {
 394   assert(!v.is_undefined(), "must be defined");
 395   if (!other.is_undefined() && v.compare(other) >= 0) {
 396     return false;
 397   } else {
 398     return true;
 399   }
 400 }
 401 
 402 static bool lookup_special_flag(const char *flag_name, SpecialFlag& flag) {
 403   for (size_t i = 0; special_jvm_flags[i].name != NULL; i++) {
 404     if ((strcmp(special_jvm_flags[i].name, flag_name) == 0)) {
 405       flag = special_jvm_flags[i];
 406       return true;
 407     }
 408   }
 409   return false;
 410 }
 411 
 412 bool Arguments::is_obsolete_flag(const char *flag_name, JDK_Version* version) {
 413   assert(version != NULL, "Must provide a version buffer");
 414   SpecialFlag flag;
 415   if (lookup_special_flag(flag_name, flag)) {
 416     if (!flag.obsolete_in.is_undefined()) {
 417       if (version_less_than(JDK_Version::current(), flag.expired_in)) {
 418         *version = flag.obsolete_in;
 419         return true;
 420       }
 421     }
 422   }
 423   return false;
 424 }
 425 
 426 int Arguments::is_deprecated_flag(const char *flag_name, JDK_Version* version) {
 427   assert(version != NULL, "Must provide a version buffer");
 428   SpecialFlag flag;
 429   if (lookup_special_flag(flag_name, flag)) {
 430     if (!flag.deprecated_in.is_undefined()) {
 431       if (version_less_than(JDK_Version::current(), flag.obsolete_in) &&
 432           version_less_than(JDK_Version::current(), flag.expired_in)) {
 433         *version = flag.deprecated_in;
 434         return 1;
 435       } else {
 436         return -1;
 437       }







 438     }
 439   }
 440   return 0;








 441 }
 442 
 443 const char* Arguments::real_flag_name(const char *flag_name) {
 444   for (size_t i = 0; aliased_jvm_flags[i].alias_name != NULL; i++) {
 445     const AliasedFlag& flag_status = aliased_jvm_flags[i];
 446     if (strcmp(flag_status.alias_name, flag_name) == 0) {
 447         return flag_status.real_name;
 448     }
 449   }
 450   return flag_name;
 451 }
 452 
 453 #ifndef PRODUCT
 454 static bool lookup_special_flag(const char *flag_name, size_t skip_index) {
 455   for (size_t i = 0; special_jvm_flags[i].name != NULL; i++) {
 456     if ((i != skip_index) && (strcmp(special_jvm_flags[i].name, flag_name) == 0)) {
 457       return true;
 458     }
 459   }
 460   return false;


< prev index next >