diff --git a/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/jdk/Target_java_lang_ClassLoader.java b/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/jdk/Target_java_lang_ClassLoader.java index eaf2438211c5..f162f95ec370 100644 --- a/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/jdk/Target_java_lang_ClassLoader.java +++ b/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/jdk/Target_java_lang_ClassLoader.java @@ -27,10 +27,10 @@ import java.io.File; import java.net.URL; import java.security.ProtectionDomain; +import java.util.ArrayList; import java.util.Collections; import java.util.Enumeration; import java.util.Set; -import java.util.Vector; import java.util.WeakHashMap; import java.util.concurrent.ConcurrentHashMap; import java.util.stream.Stream; @@ -67,7 +67,7 @@ public final class Target_java_lang_ClassLoader { * invoked by the VM to record every loaded class with this loader". */ @Alias @RecomputeFieldValue(kind = Kind.Reset)// - private Vector> classes; + private ArrayList> classes; @Alias @RecomputeFieldValue(kind = Kind.NewInstanceWhenNotNull, declClass = ConcurrentHashMap.class)// private ConcurrentHashMap parallelLockMap; diff --git a/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/jfr/JfrJdkCompatibility.java b/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/jfr/JfrJdkCompatibility.java index 4e6dc4be511c..b97fe5b658c4 100644 --- a/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/jfr/JfrJdkCompatibility.java +++ b/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/jfr/JfrJdkCompatibility.java @@ -136,6 +136,9 @@ public static String makeFilename(Recording recording) { @Alias public static native String formatTimespan(Duration dValue, String separation); + + @Alias + public static native String formatDateTime(LocalDateTime time); } @TargetClass(className = "jdk.jfr.internal.JVMSupport", onlyWith = {JDKLatest.class, HasJfrSupport.class}) @@ -169,9 +172,17 @@ final class Target_jdk_jfr_internal_PlatformRecording { final class JfrFilenameUtil { public static String makeFilename(Recording recording) { long pid = ProcessProperties.getProcessID(); - String date = Target_jdk_jfr_internal_util_ValueFormatter.formatDateTime(LocalDateTime.now()); + String date = getFormatDateTime(); String idText = recording == null ? "" : "-id-" + recording.getId(); String imageName = SubstrateOptions.Name.getValue(); return imageName + "-pid-" + pid + idText + "-" + date + ".jfr"; } + + private static String getFormatDateTime() { + LocalDateTime now = LocalDateTime.now(); + if (JavaVersionUtil.JAVA_SPEC >= 24) { + return Target_jdk_jfr_internal_util_ValueFormatter.formatDateTime(now); + } + return Target_jdk_jfr_internal_Utils.formatDateTime(now); + } }