hotspot/src/share/vm/runtime/arguments.cpp
changeset 37216 5555c1f804c4
parent 37205 dd547442bfea
child 37237 7e5787f48bae
equal deleted inserted replaced
37211:7d1ff3cd84e9 37216:5555c1f804c4
   992   }
   992   }
   993   ShouldNotReachHere();
   993   ShouldNotReachHere();
   994   return NULL;
   994   return NULL;
   995 }
   995 }
   996 
   996 
   997 AliasedLoggingFlag Arguments::catch_logging_aliases(const char* name){
   997 void log_deprecated_flag(const char* name, bool on, AliasedLoggingFlag alf) {
       
   998   LogTagType tagSet[] = {alf.tag0, alf.tag1, alf.tag2, alf.tag3, alf.tag4, alf.tag5};
       
   999   // Set tagset string buffer at max size of 256, large enough for any alias tagset
       
  1000   const int max_tagset_size = 256;
       
  1001   int max_tagset_len = max_tagset_size - 1;
       
  1002   char tagset_buffer[max_tagset_size];
       
  1003   tagset_buffer[0] = '\0';
       
  1004 
       
  1005   // Write tag-set for aliased logging option, in string list form
       
  1006   int max_tags = sizeof(tagSet)/sizeof(tagSet[0]);
       
  1007   for (int i = 0; i < max_tags && tagSet[i] != LogTag::__NO_TAG; i++) {
       
  1008     if (i > 0) {
       
  1009       strncat(tagset_buffer, ",", max_tagset_len - strlen(tagset_buffer));
       
  1010     }
       
  1011     strncat(tagset_buffer, LogTag::name(tagSet[i]), max_tagset_len - strlen(tagset_buffer));
       
  1012   }
       
  1013 
       
  1014   log_warning(arguments)("-XX:%s%s is deprecated. Will use -Xlog:%s=%s instead.",
       
  1015                          (on) ? "+" : "-",
       
  1016                          name,
       
  1017                          tagset_buffer,
       
  1018                          (on) ? LogLevel::name(alf.level) : "off");
       
  1019 }
       
  1020 
       
  1021 AliasedLoggingFlag Arguments::catch_logging_aliases(const char* name, bool on){
   998   for (size_t i = 0; aliased_logging_flags[i].alias_name != NULL; i++) {
  1022   for (size_t i = 0; aliased_logging_flags[i].alias_name != NULL; i++) {
   999     const AliasedLoggingFlag& alf = aliased_logging_flags[i];
  1023     const AliasedLoggingFlag& alf = aliased_logging_flags[i];
  1000     if (strcmp(alf.alias_name, name) == 0) {
  1024     if (strcmp(alf.alias_name, name) == 0) {
       
  1025       log_deprecated_flag(name, on, alf);
  1001       return alf;
  1026       return alf;
  1002     }
  1027     }
  1003   }
  1028   }
  1004   AliasedLoggingFlag a = {NULL, LogLevel::Off, false, LOG_TAGS(_NO_TAG)};
  1029   AliasedLoggingFlag a = {NULL, LogLevel::Off, false, LOG_TAGS(_NO_TAG)};
  1005   return a;
  1030   return a;
  1014   char dummy;
  1039   char dummy;
  1015   const char* real_name;
  1040   const char* real_name;
  1016   bool warn_if_deprecated = true;
  1041   bool warn_if_deprecated = true;
  1017 
  1042 
  1018   if (sscanf(arg, "-%" XSTR(BUFLEN) NAME_RANGE "%c", name, &dummy) == 1) {
  1043   if (sscanf(arg, "-%" XSTR(BUFLEN) NAME_RANGE "%c", name, &dummy) == 1) {
  1019     AliasedLoggingFlag alf = catch_logging_aliases(name);
  1044     AliasedLoggingFlag alf = catch_logging_aliases(name, false);
  1020     if (alf.alias_name != NULL){
  1045     if (alf.alias_name != NULL){
  1021       LogConfiguration::configure_stdout(LogLevel::Off, alf.exactMatch, alf.tag0, alf.tag1, alf.tag2, alf.tag3, alf.tag4, alf.tag5);
  1046       LogConfiguration::configure_stdout(LogLevel::Off, alf.exactMatch, alf.tag0, alf.tag1, alf.tag2, alf.tag3, alf.tag4, alf.tag5);
  1022       return true;
  1047       return true;
  1023     }
  1048     }
  1024     real_name = handle_aliases_and_deprecation(name, warn_if_deprecated);
  1049     real_name = handle_aliases_and_deprecation(name, warn_if_deprecated);
  1026       return false;
  1051       return false;
  1027     }
  1052     }
  1028     return set_bool_flag(real_name, false, origin);
  1053     return set_bool_flag(real_name, false, origin);
  1029   }
  1054   }
  1030   if (sscanf(arg, "+%" XSTR(BUFLEN) NAME_RANGE "%c", name, &dummy) == 1) {
  1055   if (sscanf(arg, "+%" XSTR(BUFLEN) NAME_RANGE "%c", name, &dummy) == 1) {
  1031     AliasedLoggingFlag alf = catch_logging_aliases(name);
  1056     AliasedLoggingFlag alf = catch_logging_aliases(name, true);
  1032     if (alf.alias_name != NULL){
  1057     if (alf.alias_name != NULL){
  1033       LogConfiguration::configure_stdout(alf.level, alf.exactMatch, alf.tag0, alf.tag1, alf.tag2, alf.tag3, alf.tag4, alf.tag5);
  1058       LogConfiguration::configure_stdout(alf.level, alf.exactMatch, alf.tag0, alf.tag1, alf.tag2, alf.tag3, alf.tag4, alf.tag5);
  1034       return true;
  1059       return true;
  1035     }
  1060     }
  1036     real_name = handle_aliases_and_deprecation(name, warn_if_deprecated);
  1061     real_name = handle_aliases_and_deprecation(name, warn_if_deprecated);
  1242     }
  1267     }
  1243 #ifndef PRODUCT
  1268 #ifndef PRODUCT
  1244     else {
  1269     else {
  1245       const char* replacement;
  1270       const char* replacement;
  1246       if ((replacement = removed_develop_logging_flag_name(stripped_argname)) != NULL){
  1271       if ((replacement = removed_develop_logging_flag_name(stripped_argname)) != NULL){
  1247         jio_fprintf(defaultStream::error_stream(),
  1272         log_warning(arguments)("%s has been removed. Please use %s instead.",
  1248                   "%s has been removed. Please use %s instead.\n", stripped_argname, replacement);
  1273                                stripped_argname,
       
  1274                                replacement);
  1249         return false;
  1275         return false;
  1250       }
  1276       }
  1251     }
  1277     }
  1252 #endif //PRODUCT
  1278 #endif //PRODUCT
  1253   }
  1279   }