Skip to content
Permalink
Browse files
8273112: -Xloggc:<filename> should override -verbose:gc
Reviewed-by: iklam, dholmes
  • Loading branch information
weixlu authored and David Holmes committed Sep 3, 2021
1 parent dd87181 commit fa9c8657dfaa2018f501de1a8aa62f004342c245
Showing with 18 additions and 8 deletions.
  1. +10 −6 src/hotspot/share/runtime/arguments.cpp
  2. +8 −2 src/hotspot/share/runtime/arguments.hpp
@@ -72,7 +72,6 @@ char** Arguments::_jvm_args_array = NULL;
int Arguments::_num_jvm_args = 0;
char* Arguments::_java_command = NULL;
SystemProperty* Arguments::_system_properties = NULL;
const char* Arguments::_gc_log_filename = NULL;
size_t Arguments::_conservative_max_heap_alignment = 0;
Arguments::Mode Arguments::_mode = _mixed;
bool Arguments::_java_compiler = false;
@@ -93,6 +92,8 @@ bool Arguments::_enable_preview = false;
char* Arguments::SharedArchivePath = NULL;
char* Arguments::SharedDynamicArchivePath = NULL;

LegacyGCLogging Arguments::_legacyGCLogging = { 0, 0 };

AgentLibraryList Arguments::_libraryList;
AgentLibraryList Arguments::_agentList;

@@ -2332,7 +2333,9 @@ jint Arguments::parse_each_vm_init_arg(const JavaVMInitArgs* args, bool* patch_m
LogConfiguration::configure_stdout(LogLevel::Info, true, LOG_TAGS(module, load));
LogConfiguration::configure_stdout(LogLevel::Info, true, LOG_TAGS(module, unload));
} else if (!strcmp(tail, ":gc")) {
LogConfiguration::configure_stdout(LogLevel::Info, true, LOG_TAGS(gc));
if (_legacyGCLogging.lastFlag == 0) {
_legacyGCLogging.lastFlag = 1;
}
} else if (!strcmp(tail, ":jni")) {
LogConfiguration::configure_stdout(LogLevel::Debug, true, LOG_TAGS(jni, resolve));
}
@@ -2739,7 +2742,8 @@ jint Arguments::parse_each_vm_init_arg(const JavaVMInitArgs* args, bool* patch_m
} else if (match_option(option, "-Xloggc:", &tail)) {
// Deprecated flag to redirect GC output to a file. -Xloggc:<filename>
log_warning(gc)("-Xloggc is deprecated. Will use -Xlog:gc:%s instead.", tail);
_gc_log_filename = os::strdup_check_oom(tail);
_legacyGCLogging.lastFlag = 2;
_legacyGCLogging.file = os::strdup_check_oom(tail);
} else if (match_option(option, "-Xlog", &tail)) {
bool ret = false;
if (strcmp(tail, ":help") == 0) {
@@ -3727,14 +3731,14 @@ bool Arguments::handle_deprecated_print_gc_flags() {
log_warning(gc)("-XX:+PrintGCDetails is deprecated. Will use -Xlog:gc* instead.");
}

if (_gc_log_filename != NULL) {
if (_legacyGCLogging.lastFlag == 2) {
// -Xloggc was used to specify a filename
const char* gc_conf = PrintGCDetails ? "gc*" : "gc";

LogTarget(Error, logging) target;
LogStream errstream(target);
return LogConfiguration::parse_log_arguments(_gc_log_filename, gc_conf, NULL, NULL, &errstream);
} else if (PrintGC || PrintGCDetails) {
return LogConfiguration::parse_log_arguments(_legacyGCLogging.file, gc_conf, NULL, NULL, &errstream);
} else if (PrintGC || PrintGCDetails || (_legacyGCLogging.lastFlag == 1)) {
LogConfiguration::configure_stdout(LogLevel::Info, !PrintGCDetails, LOG_TAGS(gc));
}
return true;
@@ -51,6 +51,11 @@ struct SpecialFlag {
JDK_Version expired_in; // When the option expires (or "undefined").
};

struct LegacyGCLogging {
const char* file; // NULL -> stdout
int lastFlag; // 0 not set; 1 -> -verbose:gc; 2 -> -Xloggc
};

// PathString is used as:
// - the underlying value for a SystemProperty
// - the path portion of an --patch-module module/path pair
@@ -317,8 +322,9 @@ class Arguments : AllStatic {
// was this VM created via the -XXaltjvm=<path> option
static bool _sun_java_launcher_is_altjvm;

// Option flags
static const char* _gc_log_filename;
// for legacy gc options (-verbose:gc and -Xloggc:)
static LegacyGCLogging _legacyGCLogging;

// Value of the conservative maximum heap alignment needed
static size_t _conservative_max_heap_alignment;

1 comment on commit fa9c865

@openjdk-notifier

This comment has been minimized.

Copy link

@openjdk-notifier openjdk-notifier bot commented on fa9c865 Sep 3, 2021

Please sign in to comment.