From 4a9b43961dc28ac8e867f8b5f9a714bdff23ead1 Mon Sep 17 00:00:00 2001 From: Christian Haeubl Date: Thu, 21 Nov 2024 08:45:07 +0100 Subject: [PATCH 1/2] Fix type of Target_java_lang_ClassLoader.classes. --- .../com/oracle/svm/core/jdk/Target_java_lang_ClassLoader.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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; From ad5126d7ac860a04365c667a52cd4172cee6a4fe Mon Sep 17 00:00:00 2001 From: Christian Haeubl Date: Thu, 21 Nov 2024 08:45:34 +0100 Subject: [PATCH 2/2] JDK 21-specific fix for JFR. --- .../oracle/svm/core/jfr/JfrJdkCompatibility.java | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) 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); + } }