--- old/src/share/vm/logging/logTag.hpp 2016-03-24 15:34:34.100645013 -0400 +++ new/src/share/vm/logging/logTag.hpp 2016-03-24 15:34:33.957276802 -0400 @@ -34,6 +34,7 @@ #define LOG_TAG_LIST \ LOG_TAG(alloc) \ LOG_TAG(age) \ + LOG_TAG(arguments) \ LOG_TAG(barrier) \ LOG_TAG(biasedlocking) \ LOG_TAG(bot) \ --- old/src/share/vm/runtime/arguments.hpp 2016-03-24 15:34:34.107758702 -0400 +++ new/src/share/vm/runtime/arguments.hpp 2016-03-24 15:34:33.958396060 -0400 @@ -471,7 +471,7 @@ // Return NULL if the arg has expired. static const char* handle_aliases_and_deprecation(const char* arg, bool warn); static bool lookup_logging_aliases(const char* arg, char* buffer); - static AliasedLoggingFlag catch_logging_aliases(const char* name); + static AliasedLoggingFlag catch_logging_aliases(const char* name, const char* pref); static short CompileOnlyClassesNum; static short CompileOnlyClassesMax; static char** CompileOnlyClasses; --- old/src/share/vm/runtime/arguments.cpp 2016-03-24 15:34:34.139393781 -0400 +++ new/src/share/vm/runtime/arguments.cpp 2016-03-24 15:34:33.957989136 -0400 @@ -975,10 +975,35 @@ return NULL; } -AliasedLoggingFlag Arguments::catch_logging_aliases(const char* name){ +void log_deprecated_flag( const char* name, const char* pref, AliasedLoggingFlag alf) { + LogTagType tagSet[5] = {alf.tag0, alf.tag1, alf.tag2, alf.tag3, alf.tag4}; + int max_tagset_size = 256; + char tagset_buffer[max_tagset_size]; + memset(tagset_buffer, 0, max_tagset_size); + char* pos = tagset_buffer; + + // Write tag-set for aliased logging option, in string list form + for (int i = 0; i < 5 && tagSet[i] != LogTag::__NO_TAG; i++) { + if (i > 0) { + strcpy(pos, ","); + pos++; + } + strcpy(pos, LogTag::name(tagSet[i])); + pos += strlen(pos); + } + + log_warning(arguments)("-XX:%s%s is deprecated. Will use -Xlog:%s=%s instead.", + pref, + name, + tagset_buffer, + (pref == "-") ? "off" : LogLevel::name(alf.level)); +} + +AliasedLoggingFlag Arguments::catch_logging_aliases(const char* name, const char* pref){ for (size_t i = 0; aliased_logging_flags[i].alias_name != NULL; i++) { const AliasedLoggingFlag& alf = aliased_logging_flags[i]; if (strcmp(alf.alias_name, name) == 0) { + log_deprecated_flag(name, pref, alf); return alf; } } @@ -997,7 +1022,7 @@ bool warn_if_deprecated = true; if (sscanf(arg, "-%" XSTR(BUFLEN) NAME_RANGE "%c", name, &dummy) == 1) { - AliasedLoggingFlag alf = catch_logging_aliases(name); + AliasedLoggingFlag alf = catch_logging_aliases(name, "-"); if (alf.alias_name != NULL){ LogConfiguration::configure_stdout(LogLevel::Off, alf.exactMatch, alf.tag0, alf.tag1, alf.tag2, alf.tag3, alf.tag4, alf.tag5); return true; @@ -1009,7 +1034,7 @@ return set_bool_flag(real_name, false, origin); } if (sscanf(arg, "+%" XSTR(BUFLEN) NAME_RANGE "%c", name, &dummy) == 1) { - AliasedLoggingFlag alf = catch_logging_aliases(name); + AliasedLoggingFlag alf = catch_logging_aliases(name, "+"); if (alf.alias_name != NULL){ LogConfiguration::configure_stdout(alf.level, alf.exactMatch, alf.tag0, alf.tag1, alf.tag2, alf.tag3, alf.tag4, alf.tag5); return true; @@ -1225,8 +1250,9 @@ else { const char* replacement; if ((replacement = removed_develop_logging_flag_name(stripped_argname)) != NULL){ - jio_fprintf(defaultStream::error_stream(), - "%s has been removed. Please use %s instead.\n", stripped_argname, replacement); + log_warning(arguments)("%s has been removed. Please use %s instead.", + stripped_argname, + replacement); return false; } }