# HG changeset patch # User egahlin # Date 1541425216 -3600 # Node ID 6372f5af96120172fadcac0fcfdfd7e81cfeb4e1 # Parent df84c02f4780b2dd5977b9de3f8e5467d4335149 8209960: -Xlog:jfr* doesn't work with the JFR Reviewed-by: mgronlun diff -r df84c02f4780 -r 6372f5af9612 src/hotspot/share/jfr/dcmd/jfrDcmds.cpp --- a/src/hotspot/share/jfr/dcmd/jfrDcmds.cpp Mon Nov 05 14:02:04 2018 +0100 +++ b/src/hotspot/share/jfr/dcmd/jfrDcmds.cpp Mon Nov 05 14:40:16 2018 +0100 @@ -446,6 +446,12 @@ assert(element != NULL, "invariant"); JfrJavaSupport::set_array_element(settings, element, i, CHECK); } + } else { + settings = JfrJavaSupport::new_string_array(1, CHECK); + assert(settings != NULL, "invariant"); + jobject element = JfrJavaSupport::new_string("default", CHECK); + assert(element != NULL, "invariant"); + JfrJavaSupport::set_array_element(settings, element, 0, CHECK); } static const char klass[] = "jdk/jfr/internal/dcmd/DCmdStart"; diff -r df84c02f4780 -r 6372f5af9612 src/jdk.jfr/share/classes/jdk/jfr/internal/JVMSupport.java --- a/src/jdk.jfr/share/classes/jdk/jfr/internal/JVMSupport.java Mon Nov 05 14:02:04 2018 +0100 +++ b/src/jdk.jfr/share/classes/jdk/jfr/internal/JVMSupport.java Mon Nov 05 14:40:16 2018 +0100 @@ -81,4 +81,7 @@ public static boolean isNotAvailable() { return notAvailable; } + + public static void tryToInitializeJVM() { + } } diff -r df84c02f4780 -r 6372f5af9612 src/jdk.jfr/share/classes/jdk/jfr/internal/LogTag.java --- a/src/jdk.jfr/share/classes/jdk/jfr/internal/LogTag.java Mon Nov 05 14:02:04 2018 +0100 +++ b/src/jdk.jfr/share/classes/jdk/jfr/internal/LogTag.java Mon Nov 05 14:40:16 2018 +0100 @@ -80,19 +80,11 @@ JFR_DCMD(10); /* set from native side */ - private volatile int tagSetLevel = 100; // prevent logging if JVM log system has not been initialized + volatile int tagSetLevel = 100; // prevent logging if JVM log system has not been initialized final int id; LogTag(int tagId) { id = tagId; } - - public boolean shouldLog(int level) { - return level >= tagSetLevel; - } - - public boolean shouldLog(LogLevel logLevel) { - return shouldLog(logLevel.level); - } } diff -r df84c02f4780 -r 6372f5af9612 src/jdk.jfr/share/classes/jdk/jfr/internal/Logger.java --- a/src/jdk.jfr/share/classes/jdk/jfr/internal/Logger.java Mon Nov 05 14:02:04 2018 +0100 +++ b/src/jdk.jfr/share/classes/jdk/jfr/internal/Logger.java Mon Nov 05 14:40:16 2018 +0100 @@ -35,15 +35,20 @@ public final class Logger { private final static int MAX_SIZE = 10000; + static { + // This will try to initialize the JVM logging system + JVMSupport.tryToInitializeJVM(); + } + public static void log(LogTag logTag, LogLevel logLevel, String message) { - if (logTag.shouldLog(logLevel.level)) { + if (shouldLog(logTag, logLevel)) { logInternal(logTag, logLevel, message); } } public static void log(LogTag logTag, LogLevel logLevel, Supplier messageSupplier) { - if (logTag.shouldLog(logLevel.level)) { + if (shouldLog(logTag, logLevel)) { logInternal(logTag, logLevel, messageSupplier.get()); } } @@ -55,4 +60,8 @@ JVM.log(logTag.id, logLevel.level, message.substring(0, MAX_SIZE)); } } + + public static boolean shouldLog(LogTag tag, LogLevel level) { + return level.level >= tag.tagSetLevel; + } } diff -r df84c02f4780 -r 6372f5af9612 src/jdk.jfr/share/classes/jdk/jfr/internal/MetadataReader.java --- a/src/jdk.jfr/share/classes/jdk/jfr/internal/MetadataReader.java Mon Nov 05 14:02:04 2018 +0100 +++ b/src/jdk.jfr/share/classes/jdk/jfr/internal/MetadataReader.java Mon Nov 05 14:40:16 2018 +0100 @@ -79,7 +79,7 @@ descriptor.gmtOffset = time.attribute(MetadataDescriptor.ATTRIBUTE_GMT_OFFSET, 1); descriptor.locale = time.attribute(MetadataDescriptor.ATTRIBUTE_LOCALE, ""); descriptor.root = root; - if (LogTag.JFR_SYSTEM_PARSER.shouldLog(LogLevel.TRACE.level)) { + if (Logger.shouldLog(LogTag.JFR_SYSTEM_PARSER, LogLevel.TRACE)) { List ts = new ArrayList<>(types.values()); Collections.sort(ts, (x,y) -> x.getName().compareTo(y.getName())); for (Type t : ts) { diff -r df84c02f4780 -r 6372f5af9612 src/jdk.jfr/share/classes/jdk/jfr/internal/PlatformRecording.java --- a/src/jdk.jfr/share/classes/jdk/jfr/internal/PlatformRecording.java Mon Nov 05 14:02:04 2018 +0100 +++ b/src/jdk.jfr/share/classes/jdk/jfr/internal/PlatformRecording.java Mon Nov 05 14:40:16 2018 +0100 @@ -453,7 +453,7 @@ } private void setSettings(Map settings, boolean update) { - if (LogTag.JFR_SETTING.shouldLog(LogLevel.INFO.level) && update) { + if (Logger.shouldLog(LogTag.JFR_SETTING, LogLevel.INFO) && update) { TreeMap ordered = new TreeMap<>(settings); Logger.log(LogTag.JFR_SETTING, LogLevel.INFO, "New settings for recording \"" + getName() + "\" (" + getId() + ")"); for (Map.Entry entry : ordered.entrySet()) { diff -r df84c02f4780 -r 6372f5af9612 src/jdk.jfr/share/classes/jdk/jfr/internal/SettingsManager.java --- a/src/jdk.jfr/share/classes/jdk/jfr/internal/SettingsManager.java Mon Nov 05 14:02:04 2018 +0100 +++ b/src/jdk.jfr/share/classes/jdk/jfr/internal/SettingsManager.java Mon Nov 05 14:40:16 2018 +0100 @@ -139,7 +139,7 @@ ec.disable(); } } else { - if (LogTag.JFR_SETTING.shouldLog(LogLevel.INFO.level)) { + if (Logger.shouldLog(LogTag.JFR_SETTING, LogLevel.INFO)) { Collections.sort(eventControls, (x,y) -> x.getEventType().getName().compareTo(y.getEventType().getName())); } for (EventControl ec : eventControls) { @@ -224,7 +224,7 @@ if (values != null) { control.apply(values); String after = control.getLastValue(); - if (LogTag.JFR_SETTING.shouldLog(LogLevel.INFO.level)) { + if (Logger.shouldLog(LogTag.JFR_SETTING, LogLevel.INFO)) { if (Utils.isSettingVisible(control, ec.getEventType().hasEventHook())) { if (values.size() > 1) { StringJoiner sj = new StringJoiner(", ", "{", "}"); @@ -241,7 +241,7 @@ } } else { control.setDefault(); - if (LogTag.JFR_SETTING.shouldLog(LogLevel.INFO.level)) { + if (Logger.shouldLog(LogTag.JFR_SETTING, LogLevel.INFO)) { String message = " " + settingName + "=\"" + control.getLastValue() + "\""; Logger.log(LogTag.JFR_SETTING, LogLevel.INFO, message); } diff -r df84c02f4780 -r 6372f5af9612 src/jdk.jfr/share/classes/jdk/jfr/internal/Type.java --- a/src/jdk.jfr/share/classes/jdk/jfr/internal/Type.java Mon Nov 05 14:02:04 2018 +0100 +++ b/src/jdk.jfr/share/classes/jdk/jfr/internal/Type.java Mon Nov 05 14:40:16 2018 +0100 @@ -271,7 +271,7 @@ } void log(String action, LogTag logTag, LogLevel level) { - if (logTag.shouldLog(level.level) && !isSimpleType()) { + if (Logger.shouldLog(logTag, level) && !isSimpleType()) { Logger.log(logTag, LogLevel.TRACE, action + " " + typeText() + " " + getLogName() + " {"); for (ValueDescriptor v : getFields()) { String array = v.isArray() ? "[]" : ""; @@ -279,7 +279,7 @@ } Logger.log(logTag, LogLevel.TRACE, "}"); } else { - if (logTag.shouldLog(LogLevel.INFO.level) && !isSimpleType()) { + if (Logger.shouldLog(logTag, LogLevel.INFO) && !isSimpleType()) { Logger.log(logTag, LogLevel.INFO, action + " " + typeText() + " " + getLogName()); } } diff -r df84c02f4780 -r 6372f5af9612 src/jdk.jfr/share/classes/jdk/jfr/internal/TypeLibrary.java --- a/src/jdk.jfr/share/classes/jdk/jfr/internal/TypeLibrary.java Mon Nov 05 14:02:04 2018 +0100 +++ b/src/jdk.jfr/share/classes/jdk/jfr/internal/TypeLibrary.java Mon Nov 05 14:40:16 2018 +0100 @@ -68,7 +68,7 @@ private TypeLibrary(List jvmTypes) { visitReachable(jvmTypes, t -> !types.containsKey(t.getId()), t -> types.put(t.getId(), t)); - if (LogTag.JFR_SYSTEM_METADATA.shouldLog(LogLevel.INFO.level)) { + if (Logger.shouldLog(LogTag.JFR_SYSTEM_METADATA, LogLevel.INFO)) { Stream s = types.values().stream().sorted((x, y) -> Long.compare(x.getId(), y.getId())); s.forEach(t -> t.log("Added", LogTag.JFR_SYSTEM_METADATA, LogLevel.INFO)); } @@ -422,7 +422,7 @@ for (Type type : types.values()) { if (type.getRemove() && !Type.isDefinedByJVM(type.getId())) { removeIds.add(type.getId()); - if (LogTag.JFR_METADATA.shouldLog(LogLevel.TRACE.level)) { + if (Logger.shouldLog(LogTag.JFR_METADATA, LogLevel.TRACE)) { Logger.log(LogTag.JFR_METADATA, LogLevel.TRACE, "Removed obsolete metadata " + type.getName()); } } diff -r df84c02f4780 -r 6372f5af9612 src/jdk.jfr/share/classes/jdk/jfr/internal/dcmd/DCmdCheck.java --- a/src/jdk.jfr/share/classes/jdk/jfr/internal/dcmd/DCmdCheck.java Mon Nov 05 14:02:04 2018 +0100 +++ b/src/jdk.jfr/share/classes/jdk/jfr/internal/dcmd/DCmdCheck.java Mon Nov 05 14:40:16 2018 +0100 @@ -63,7 +63,7 @@ } private void executeInternal(String name, Boolean verbose) throws DCmdException { - if (LogTag.JFR_DCMD.shouldLog(LogLevel.DEBUG)) { + if (Logger.shouldLog(LogTag.JFR_DCMD, LogLevel.DEBUG)) { Logger.log(LogTag.JFR_DCMD, LogLevel.DEBUG, "Executing DCmdCheck: name=" + name + ", verbose=" + verbose); } diff -r df84c02f4780 -r 6372f5af9612 src/jdk.jfr/share/classes/jdk/jfr/internal/dcmd/DCmdConfigure.java --- a/src/jdk.jfr/share/classes/jdk/jfr/internal/dcmd/DCmdConfigure.java Mon Nov 05 14:02:04 2018 +0100 +++ b/src/jdk.jfr/share/classes/jdk/jfr/internal/dcmd/DCmdConfigure.java Mon Nov 05 14:40:16 2018 +0100 @@ -70,7 +70,7 @@ Boolean sampleThreads ) throws DCmdException { - if (LogTag.JFR_DCMD.shouldLog(LogLevel.DEBUG)) { + if (Logger.shouldLog(LogTag.JFR_DCMD, LogLevel.DEBUG)) { Logger.log(LogTag.JFR_DCMD, LogLevel.DEBUG, "Executing DCmdConfigure: repositorypath=" + repositoryPath + ", dumppath=" + dumpPath + ", stackdepth=" + stackDepth + diff -r df84c02f4780 -r 6372f5af9612 src/jdk.jfr/share/classes/jdk/jfr/internal/dcmd/DCmdDump.java --- a/src/jdk.jfr/share/classes/jdk/jfr/internal/dcmd/DCmdDump.java Mon Nov 05 14:02:04 2018 +0100 +++ b/src/jdk.jfr/share/classes/jdk/jfr/internal/dcmd/DCmdDump.java Mon Nov 05 14:40:16 2018 +0100 @@ -70,7 +70,7 @@ * @throws DCmdException if the dump could not be completed */ public String execute(String name, String filename, Long maxAge, Long maxSize, String begin, String end, Boolean pathToGcRoots) throws DCmdException { - if (LogTag.JFR_DCMD.shouldLog(LogLevel.DEBUG)) { + if (Logger.shouldLog(LogTag.JFR_DCMD, LogLevel.DEBUG)) { Logger.log(LogTag.JFR_DCMD, LogLevel.DEBUG, "Executing DCmdDump: name=" + name + ", filename=" + filename + diff -r df84c02f4780 -r 6372f5af9612 src/jdk.jfr/share/classes/jdk/jfr/internal/dcmd/DCmdStart.java --- a/src/jdk.jfr/share/classes/jdk/jfr/internal/dcmd/DCmdStart.java Mon Nov 05 14:02:04 2018 +0100 +++ b/src/jdk.jfr/share/classes/jdk/jfr/internal/dcmd/DCmdStart.java Mon Nov 05 14:40:16 2018 +0100 @@ -81,7 +81,7 @@ */ @SuppressWarnings("resource") public String execute(String name, String[] settings, Long delay, Long duration, Boolean disk, String path, Long maxAge, Long maxSize, Boolean dumpOnExit, Boolean pathToGcRoots) throws DCmdException { - if (LogTag.JFR_DCMD.shouldLog(LogLevel.DEBUG)) { + if (Logger.shouldLog(LogTag.JFR_DCMD, LogLevel.DEBUG)) { Logger.log(LogTag.JFR_DCMD, LogLevel.DEBUG, "Executing DCmdStart: name=" + name + ", settings=" + Arrays.asList(settings) + ", delay=" + delay + @@ -106,13 +106,7 @@ throw new DCmdException("Filename can only be set for a time bound recording or if dumponexit=true. Set duration/dumponexit or omit filename."); } - Map s = new HashMap<>(); - - if (settings == null || settings.length == 0) { - settings = new String[] { "default" }; - } - for (String configName : settings) { try { s.putAll(JFC.createKnown(configName).getSettings()); diff -r df84c02f4780 -r 6372f5af9612 src/jdk.jfr/share/classes/jdk/jfr/internal/dcmd/DCmdStop.java --- a/src/jdk.jfr/share/classes/jdk/jfr/internal/dcmd/DCmdStop.java Mon Nov 05 14:02:04 2018 +0100 +++ b/src/jdk.jfr/share/classes/jdk/jfr/internal/dcmd/DCmdStop.java Mon Nov 05 14:40:16 2018 +0100 @@ -56,7 +56,7 @@ * @throws DCmdException if recording could not be stopped */ public String execute(String name, String filename) throws DCmdException { - if (LogTag.JFR_DCMD.shouldLog(LogLevel.DEBUG)) { + if (Logger.shouldLog(LogTag.JFR_DCMD, LogLevel.DEBUG)) { Logger.log(LogTag.JFR_DCMD, LogLevel.DEBUG, "Executing DCmdStart: name=" + name + ", filename=" + filename); }