From 546ef15f88759ff65e8c16161c79ee4b7aa8c049 Mon Sep 17 00:00:00 2001 From: Yudi Zheng Date: Wed, 25 Jun 2025 23:17:54 +0200 Subject: [PATCH 1/9] Adapt JDK-8352565: Add native method implementation of Reference.get() --- .../compiler/hotspot/meta/UnimplementedGraalIntrinsics.java | 2 +- .../svm/core/heap/Target_java_lang_ref_Reference.java | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/compiler/src/jdk.graal.compiler/src/jdk/graal/compiler/hotspot/meta/UnimplementedGraalIntrinsics.java b/compiler/src/jdk.graal.compiler/src/jdk/graal/compiler/hotspot/meta/UnimplementedGraalIntrinsics.java index 89fff6e6d127..65487844c7e2 100644 --- a/compiler/src/jdk.graal.compiler/src/jdk/graal/compiler/hotspot/meta/UnimplementedGraalIntrinsics.java +++ b/compiler/src/jdk.graal.compiler/src/jdk/graal/compiler/hotspot/meta/UnimplementedGraalIntrinsics.java @@ -129,7 +129,7 @@ public UnimplementedGraalIntrinsics(Architecture arch) { "java/lang/StringUTF16.indexOfLatin1([BI[BII)I", "java/lang/StringUTF16.indexOfLatin1([B[B)I", // implemented through lowering - "java/lang/ref/Reference.get()Ljava/lang/Object;", + "java/lang/ref/Reference.get0()Ljava/lang/Object;", // Relevant for Java flight recorder // [GR-10106] These JFR intrinsics are used for firing socket/file events // via Java instrumentation and are of low priority. diff --git a/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/heap/Target_java_lang_ref_Reference.java b/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/heap/Target_java_lang_ref_Reference.java index d155b37f2c66..dd49aec700c3 100644 --- a/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/heap/Target_java_lang_ref_Reference.java +++ b/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/heap/Target_java_lang_ref_Reference.java @@ -123,6 +123,12 @@ public final class Target_java_lang_ref_Reference { @KeepOriginal native T get(); + @Substitute + @SuppressWarnings("unchecked") + private T get0() { + return (T) ReferenceInternals.getReferent(SubstrateUtil.cast(this, Reference.class)); + } + @KeepOriginal native void clear(); From 1caad0f3107c6802db5bc89c11b373999526b48b Mon Sep 17 00:00:00 2001 From: Yudi Zheng Date: Wed, 25 Jun 2025 23:18:24 +0200 Subject: [PATCH 2/9] Update galahad JDK --- common.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common.json b/common.json index 5fb75e59355a..f6c64b6ca047 100644 --- a/common.json +++ b/common.json @@ -8,7 +8,7 @@ "COMMENT.jdks": "When adding or removing JDKs keep in sync with JDKs in ci/common.jsonnet", "jdks": { - "galahad-jdk": {"name": "jpg-jdk", "version": "25", "build_id": "jdk-26+2-83", "platformspecific": true, "extrabundles": ["static-libs"]}, + "galahad-jdk": {"name": "jpg-jdk", "version": "25", "build_id": "jdk-26+4-323", "platformspecific": true, "extrabundles": ["static-libs"]}, "oraclejdk17": {"name": "jpg-jdk", "version": "17.0.7", "build_id": "jdk-17.0.7+8", "platformspecific": true, "extrabundles": ["static-libs"]}, "labsjdk-ce-17": {"name": "labsjdk", "version": "ce-17.0.7+4-jvmci-23.1-b02", "platformspecific": true }, From 602ea10dab8d7d6ce737763e0bcaf0cbe07092b3 Mon Sep 17 00:00:00 2001 From: ol-automation_ww Date: Thu, 26 Jun 2025 22:33:22 +0000 Subject: [PATCH 3/9] update JVMCI to 26+4-jvmci-b01 --- common.json | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/common.json b/common.json index 7e4804eae358..59ab0b59df10 100644 --- a/common.json +++ b/common.json @@ -45,13 +45,13 @@ "oraclejdk24": {"name": "jpg-jdk", "version": "24", "build_id": "jdk-24.0.1+9", "platformspecific": true, "extrabundles": ["static-libs"]}, - "oraclejdk-latest": {"name": "jpg-jdk", "version": "26", "build_id": "jdk-26+3", "platformspecific": true, "extrabundles": ["static-libs"]}, - "labsjdk-ce-latest": {"name": "labsjdk", "version": "ce-26+3-jvmci-b01", "platformspecific": true }, - "labsjdk-ce-latestDebug": {"name": "labsjdk", "version": "ce-26+3-jvmci-b01-debug", "platformspecific": true }, - "labsjdk-ce-latest-llvm": {"name": "labsjdk", "version": "ce-26+3-jvmci-b01-sulong", "platformspecific": true }, - "labsjdk-ee-latest": {"name": "labsjdk", "version": "ee-26+3-jvmci-b01", "platformspecific": true }, - "labsjdk-ee-latestDebug": {"name": "labsjdk", "version": "ee-26+3-jvmci-b01-debug", "platformspecific": true }, - "labsjdk-ee-latest-llvm": {"name": "labsjdk", "version": "ee-26+3-jvmci-b01-sulong", "platformspecific": true } + "oraclejdk-latest": {"name": "jpg-jdk", "version": "26", "build_id": "jdk-26+4", "platformspecific": true, "extrabundles": ["static-libs"]}, + "labsjdk-ce-latest": {"name": "labsjdk", "version": "ce-26+4-jvmci-b01-20250626180800-83452697d0", "platformspecific": true }, + "labsjdk-ce-latestDebug": {"name": "labsjdk", "version": "ce-26+4-jvmci-b01-20250626180800-83452697d0-debug", "platformspecific": true }, + "labsjdk-ce-latest-llvm": {"name": "labsjdk", "version": "ce-26+4-jvmci-b01-20250626180800-83452697d0-sulong", "platformspecific": true }, + "labsjdk-ee-latest": {"name": "labsjdk", "version": "ee-26+4-jvmci-b01-20250626180800-83452697d0+d0ccee7b79", "platformspecific": true }, + "labsjdk-ee-latestDebug": {"name": "labsjdk", "version": "ee-26+4-jvmci-b01-20250626180800-83452697d0+d0ccee7b79-debug", "platformspecific": true }, + "labsjdk-ee-latest-llvm": {"name": "labsjdk", "version": "ee-26+4-jvmci-b01-20250626180800-83452697d0+d0ccee7b79-sulong", "platformspecific": true } }, "eclipse": { From 4ff6fccb4075f94a6bf95913950065db3ab581d0 Mon Sep 17 00:00:00 2001 From: jovsteva Date: Fri, 27 Jun 2025 09:31:57 +0200 Subject: [PATCH 4/9] Update JVMCI version. --- .../src/jdk/graal/compiler/hotspot/JVMCIVersionCheck.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/compiler/src/jdk.graal.compiler/src/jdk/graal/compiler/hotspot/JVMCIVersionCheck.java b/compiler/src/jdk.graal.compiler/src/jdk/graal/compiler/hotspot/JVMCIVersionCheck.java index b3ad7aea7979..3946d1428f94 100644 --- a/compiler/src/jdk.graal.compiler/src/jdk/graal/compiler/hotspot/JVMCIVersionCheck.java +++ b/compiler/src/jdk.graal.compiler/src/jdk/graal/compiler/hotspot/JVMCIVersionCheck.java @@ -55,8 +55,8 @@ public final class JVMCIVersionCheck { */ private static final Map> JVMCI_MIN_VERSIONS = Map.of( "26", Map.of( - "Oracle Corporation", createLabsJDKVersion("26+3", 1), - DEFAULT_VENDOR_ENTRY, createLabsJDKVersion("26+3", 1))); + "Oracle Corporation", createLabsJDKVersion("26+4", 1), + DEFAULT_VENDOR_ENTRY, createLabsJDKVersion("26+4", 1))); private static final int NA = 0; /** * Minimum Java release supported by Graal. From b399a6dc8eaa3f1723d4088d655698aa77d88528 Mon Sep 17 00:00:00 2001 From: jovsteva Date: Fri, 27 Jun 2025 18:00:49 +0200 Subject: [PATCH 5/9] Update BasedOnJDKAnnotation. --- .../svm/core/container/ContainerLibrary.java | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/container/ContainerLibrary.java b/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/container/ContainerLibrary.java index 20ba78cc90a6..de197ccd459d 100644 --- a/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/container/ContainerLibrary.java +++ b/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/container/ContainerLibrary.java @@ -50,17 +50,17 @@ // The following annotations are for files in `src/hotspot`, which are copied from the JDK @BasedOnJDKFile("https://github.com/openjdk/jdk/blob/jdk-25+18/src/java.base/share/native/include/jni.h") @BasedOnJDKFile("https://github.com/openjdk/jdk/blob/jdk-25+18/src/java.base/unix/native/include/jni_md.h") -@BasedOnJDKFile("https://github.com/openjdk/jdk/blob/jdk-25+23/src/hotspot/os/linux/cgroupSubsystem_linux.cpp") -@BasedOnJDKFile("https://github.com/openjdk/jdk/blob/jdk-25+18/src/hotspot/os/linux/cgroupSubsystem_linux.hpp") +@BasedOnJDKFile("https://github.com/openjdk/jdk/blob/jdk-26+4/src/hotspot/os/linux/cgroupSubsystem_linux.cpp") +@BasedOnJDKFile("https://github.com/openjdk/jdk/blob/jdk-26+4/src/hotspot/os/linux/cgroupSubsystem_linux.hpp") @BasedOnJDKFile("https://github.com/openjdk/jdk/blob/jdk-25+18/src/hotspot/os/linux/cgroupUtil_linux.cpp") @BasedOnJDKFile("https://github.com/openjdk/jdk/blob/jdk-25+18/src/hotspot/os/linux/cgroupUtil_linux.hpp") -@BasedOnJDKFile("https://github.com/openjdk/jdk/blob/jdk-25+18/src/hotspot/os/linux/cgroupV1Subsystem_linux.cpp") -@BasedOnJDKFile("https://github.com/openjdk/jdk/blob/jdk-25+18/src/hotspot/os/linux/cgroupV1Subsystem_linux.hpp") -@BasedOnJDKFile("https://github.com/openjdk/jdk/blob/jdk-25+18/src/hotspot/os/linux/cgroupV2Subsystem_linux.cpp") -@BasedOnJDKFile("https://github.com/openjdk/jdk/blob/jdk-25+18/src/hotspot/os/linux/cgroupV2Subsystem_linux.hpp") -@BasedOnJDKFile("https://github.com/openjdk/jdk/blob/jdk-25+18/src/hotspot/os/linux/osContainer_linux.cpp") -@BasedOnJDKFile("https://github.com/openjdk/jdk/blob/jdk-25+18/src/hotspot/os/linux/osContainer_linux.hpp") -@BasedOnJDKFile("https://github.com/openjdk/jdk/blob/jdk-26+2/src/hotspot/os/linux/os_linux.cpp") +@BasedOnJDKFile("https://github.com/openjdk/jdk/blob/jdk-26+4/src/hotspot/os/linux/cgroupV1Subsystem_linux.cpp") +@BasedOnJDKFile("https://github.com/openjdk/jdk/blob/jdk-26+4/src/hotspot/os/linux/cgroupV1Subsystem_linux.hpp") +@BasedOnJDKFile("https://github.com/openjdk/jdk/blob/jdk-26+4/src/hotspot/os/linux/cgroupV2Subsystem_linux.cpp") +@BasedOnJDKFile("https://github.com/openjdk/jdk/blob/jdk-26+4/src/hotspot/os/linux/cgroupV2Subsystem_linux.hpp") +@BasedOnJDKFile("https://github.com/openjdk/jdk/blob/jdk-26+4/src/hotspot/os/linux/osContainer_linux.cpp") +@BasedOnJDKFile("https://github.com/openjdk/jdk/blob/jdk-26+4/src/hotspot/os/linux/osContainer_linux.hpp") +@BasedOnJDKFile("https://github.com/openjdk/jdk/blob/jdk-26+4/src/hotspot/os/linux/os_linux.cpp") @BasedOnJDKFile("https://github.com/openjdk/jdk/blob/jdk-25+18/src/hotspot/os/linux/os_linux.hpp") @BasedOnJDKFile("https://github.com/openjdk/jdk/blob/jdk-25+18/src/hotspot/os/linux/os_linux.inline.hpp") @BasedOnJDKFile("https://github.com/openjdk/jdk/blob/jdk-25+18/src/hotspot/os/posix/include/jvm_md.h") @@ -85,7 +85,7 @@ // The following annotations are for files in `src/svm`, which are completely customized for SVM @BasedOnJDKFile("https://github.com/openjdk/jdk/blob/jdk-25+18/src/hotspot/share/logging/log.hpp") @BasedOnJDKFile("https://github.com/openjdk/jdk/blob/jdk-25+26/src/hotspot/share/memory/allocation.cpp") -@BasedOnJDKFile("https://github.com/openjdk/jdk/blob/jdk-26+3/src/hotspot/share/runtime/globals.hpp") +@BasedOnJDKFile("https://github.com/openjdk/jdk/blob/jdk-26+4/src/hotspot/share/runtime/globals.hpp") @BasedOnJDKFile("https://github.com/openjdk/jdk/blob/jdk-26+3/src/hotspot/share/utilities/debug.cpp") @BasedOnJDKFile("https://github.com/openjdk/jdk/blob/jdk-25+18/src/hotspot/share/utilities/debug.hpp") public class ContainerLibrary { From ef6ee3c9f09e5d822f0c957f35d51a0f8063537a Mon Sep 17 00:00:00 2001 From: jovsteva Date: Fri, 27 Jun 2025 18:01:52 +0200 Subject: [PATCH 6/9] Adopt JDK-8359732: Make standard i/o encoding related system properties StaticProperty. --- ...rget_jdk_internal_util_StaticProperty.java | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/jdk/Target_jdk_internal_util_StaticProperty.java b/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/jdk/Target_jdk_internal_util_StaticProperty.java index bb72eee8511c..46f8078011b2 100644 --- a/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/jdk/Target_jdk_internal_util_StaticProperty.java +++ b/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/jdk/Target_jdk_internal_util_StaticProperty.java @@ -96,6 +96,18 @@ final class Target_jdk_internal_util_StaticProperty { @RecomputeFieldValue(kind = RecomputeFieldValue.Kind.Reset)// private static String JAVA_PROPERTIES_DATE; + @Alias// + @RecomputeFieldValue(kind = RecomputeFieldValue.Kind.Reset)// + private static String STDIN_ENCODING; + + @Alias// + @RecomputeFieldValue(kind = RecomputeFieldValue.Kind.Reset)// + private static String STDERR_ENCODING; + + @Alias// + @RecomputeFieldValue(kind = RecomputeFieldValue.Kind.Reset)// + private static String STDOUT_ENCODING; + @Alias// @RecomputeFieldValue(kind = RecomputeFieldValue.Kind.Reset)// private static String SUN_JNU_ENCODING; @@ -193,6 +205,10 @@ final class Target_jdk_internal_util_StaticProperty { NATIVE_ENCODING = p.getInitialProperty("native.encoding"); FILE_ENCODING = p.getInitialProperty("file.encoding"); JAVA_PROPERTIES_DATE = p.getInitialProperty("java.properties.date"); + STDIN_ENCODING = p.getInitialProperty("stdin.encoding"); + STDERR_ENCODING = p.getInitialProperty("stderr.encoding"); + STDOUT_ENCODING = p.getInitialProperty("stdout.encoding"); + SUN_JNU_ENCODING = p.getInitialProperty("sun.jnu.encoding"); JAVA_LOCALE_USE_OLD_ISO_CODES = p.getInitialProperty("java.locale.useOldISOCodes", ""); @@ -297,6 +313,24 @@ public static String javaPropertiesDate() { return JAVA_PROPERTIES_DATE; } + @Substitute + public static String javaStdinEncoding() { + assert Objects.equals(STDIN_ENCODING, SystemPropertiesSupport.singleton().getInitialProperty("stdin.encoding")); + return STDIN_ENCODING; + } + + @Substitute + public static String javaStdoutEncoding() { + assert Objects.equals(STDOUT_ENCODING, SystemPropertiesSupport.singleton().getInitialProperty("stdout.encoding")); + return STDOUT_ENCODING; + } + + @Substitute + public static String javaStderrEncoding() { + assert Objects.equals(STDERR_ENCODING, SystemPropertiesSupport.singleton().getInitialProperty("stderr.encoding")); + return STDERR_ENCODING; + } + @Substitute public static String jnuEncoding() { assert Objects.equals(SUN_JNU_ENCODING, SystemPropertiesSupport.singleton().getInitialProperty("sun.jnu.encoding")); From 990c61e3c38d39921a1a519948f9e7f3087279a1 Mon Sep 17 00:00:00 2001 From: jovsteva Date: Fri, 27 Jun 2025 18:13:53 +0200 Subject: [PATCH 7/9] Follow up for JDK-8359732 adoption. --- .../core/jdk/Target_jdk_internal_util_StaticProperty.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/jdk/Target_jdk_internal_util_StaticProperty.java b/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/jdk/Target_jdk_internal_util_StaticProperty.java index 46f8078011b2..4b3db5f051e5 100644 --- a/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/jdk/Target_jdk_internal_util_StaticProperty.java +++ b/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/jdk/Target_jdk_internal_util_StaticProperty.java @@ -314,19 +314,19 @@ public static String javaPropertiesDate() { } @Substitute - public static String javaStdinEncoding() { + public static String stdinEncoding() { assert Objects.equals(STDIN_ENCODING, SystemPropertiesSupport.singleton().getInitialProperty("stdin.encoding")); return STDIN_ENCODING; } @Substitute - public static String javaStdoutEncoding() { + public static String stdoutEncoding() { assert Objects.equals(STDOUT_ENCODING, SystemPropertiesSupport.singleton().getInitialProperty("stdout.encoding")); return STDOUT_ENCODING; } @Substitute - public static String javaStderrEncoding() { + public static String stderrEncoding() { assert Objects.equals(STDERR_ENCODING, SystemPropertiesSupport.singleton().getInitialProperty("stderr.encoding")); return STDERR_ENCODING; } From 0e1bc06678f2fb25a0796f59341a9f243a361156 Mon Sep 17 00:00:00 2001 From: Marouane El Hallaoui Date: Sun, 29 Jun 2025 13:04:11 +0100 Subject: [PATCH 8/9] deploy labsjdk snapshots --- common.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/common.json b/common.json index 838cede5b40e..1ddcb24f97c6 100644 --- a/common.json +++ b/common.json @@ -46,12 +46,12 @@ "oraclejdk24": {"name": "jpg-jdk", "version": "24", "build_id": "jdk-24.0.1+9", "platformspecific": true, "extrabundles": ["static-libs"]}, "oraclejdk-latest": {"name": "jpg-jdk", "version": "26", "build_id": "jdk-26+4", "platformspecific": true, "extrabundles": ["static-libs"]}, - "labsjdk-ce-latest": {"name": "labsjdk", "version": "ce-26+4-jvmci-b01-20250626180800-83452697d0", "platformspecific": true }, - "labsjdk-ce-latestDebug": {"name": "labsjdk", "version": "ce-26+4-jvmci-b01-20250626180800-83452697d0-debug", "platformspecific": true }, - "labsjdk-ce-latest-llvm": {"name": "labsjdk", "version": "ce-26+4-jvmci-b01-20250626180800-83452697d0-sulong", "platformspecific": true }, - "labsjdk-ee-latest": {"name": "labsjdk", "version": "ee-26+4-jvmci-b01-20250626180800-83452697d0+d0ccee7b79", "platformspecific": true }, - "labsjdk-ee-latestDebug": {"name": "labsjdk", "version": "ee-26+4-jvmci-b01-20250626180800-83452697d0+d0ccee7b79-debug", "platformspecific": true }, - "labsjdk-ee-latest-llvm": {"name": "labsjdk", "version": "ee-26+4-jvmci-b01-20250626180800-83452697d0+d0ccee7b79-sulong", "platformspecific": true } + "labsjdk-ce-latest": {"name": "labsjdk", "version": "ce-26+4-jvmci-b01", "platformspecific": true }, + "labsjdk-ce-latestDebug": {"name": "labsjdk", "version": "ce-26+4-jvmci-b01-debug", "platformspecific": true }, + "labsjdk-ce-latest-llvm": {"name": "labsjdk", "version": "ce-26+4-jvmci-b01-sulong", "platformspecific": true }, + "labsjdk-ee-latest": {"name": "labsjdk", "version": "ee-26+4-jvmci-b01", "platformspecific": true }, + "labsjdk-ee-latestDebug": {"name": "labsjdk", "version": "ee-26+4-jvmci-b01-debug", "platformspecific": true }, + "labsjdk-ee-latest-llvm": {"name": "labsjdk", "version": "ee-26+4-jvmci-b01-sulong", "platformspecific": true } }, "eclipse": { From 5ea09ac805af437937505c1ead608457e380e3fb Mon Sep 17 00:00:00 2001 From: Yudi Zheng Date: Mon, 30 Jun 2025 12:35:16 +0200 Subject: [PATCH 9/9] Implement Reference.get0 intrinsic (JDK-8352565) --- .../hotspot/meta/HotSpotGraphBuilderPlugins.java | 13 +++++++++++++ .../hotspot/meta/UnimplementedGraalIntrinsics.java | 2 -- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/compiler/src/jdk.graal.compiler/src/jdk/graal/compiler/hotspot/meta/HotSpotGraphBuilderPlugins.java b/compiler/src/jdk.graal.compiler/src/jdk/graal/compiler/hotspot/meta/HotSpotGraphBuilderPlugins.java index 19b83b124625..8a765a7a4641 100644 --- a/compiler/src/jdk.graal.compiler/src/jdk/graal/compiler/hotspot/meta/HotSpotGraphBuilderPlugins.java +++ b/compiler/src/jdk.graal.compiler/src/jdk/graal/compiler/hotspot/meta/HotSpotGraphBuilderPlugins.java @@ -1607,6 +1607,18 @@ protected boolean useExplicitReachabilityFence(GraphBuilderContext b) { return Options.ForceExplicitReachabilityFence.getValue(b.getOptions()); } }); + r.register(new InlineOnlyInvocationPlugin("get0", Receiver.class) { + @Override + public boolean apply(GraphBuilderContext b, ResolvedJavaMethod targetMethod, Receiver receiver) { + ValueNode offset = b.add(ConstantNode.forLong(HotSpotReplacementsUtil.referentOffset(b.getMetaAccess()))); + AddressNode address = b.add(new OffsetAddressNode(receiver.get(true), offset)); + FieldLocationIdentity locationIdentity = new FieldLocationIdentity(HotSpotReplacementsUtil.referentField(b.getMetaAccess())); + JavaReadNode read = b.add(new JavaReadNode(StampFactory.object(), JavaKind.Object, address, locationIdentity, BarrierType.REFERENCE_GET, MemoryOrderMode.PLAIN, true)); + b.add(new MembarNode(MembarNode.FenceKind.NONE, locationIdentity)); + b.addPush(JavaKind.Object, read); + return true; + } + }); r.register(new InlineOnlyInvocationPlugin("refersTo0", Receiver.class, Object.class) { @Override public boolean apply(GraphBuilderContext b, ResolvedJavaMethod targetMethod, Receiver receiver, ValueNode o) { @@ -1614,6 +1626,7 @@ public boolean apply(GraphBuilderContext b, ResolvedJavaMethod targetMethod, Rec AddressNode address = b.add(new OffsetAddressNode(receiver.get(true), offset)); FieldLocationIdentity locationIdentity = new FieldLocationIdentity(HotSpotReplacementsUtil.referentField(b.getMetaAccess())); JavaReadNode read = b.add(new JavaReadNode(StampFactory.object(), JavaKind.Object, address, locationIdentity, BarrierType.WEAK_REFERS_TO, MemoryOrderMode.PLAIN, true)); + b.add(new MembarNode(MembarNode.FenceKind.NONE, locationIdentity)); LogicNode objectEquals = b.add(ObjectEqualsNode.create(b.getConstantReflection(), b.getMetaAccess(), b.getOptions(), read, o, NodeView.DEFAULT)); b.addPush(JavaKind.Boolean, ConditionalNode.create(objectEquals, b.add(forBoolean(true)), b.add(forBoolean(false)), NodeView.DEFAULT)); return true; diff --git a/compiler/src/jdk.graal.compiler/src/jdk/graal/compiler/hotspot/meta/UnimplementedGraalIntrinsics.java b/compiler/src/jdk.graal.compiler/src/jdk/graal/compiler/hotspot/meta/UnimplementedGraalIntrinsics.java index 65487844c7e2..defbfca3f60c 100644 --- a/compiler/src/jdk.graal.compiler/src/jdk/graal/compiler/hotspot/meta/UnimplementedGraalIntrinsics.java +++ b/compiler/src/jdk.graal.compiler/src/jdk/graal/compiler/hotspot/meta/UnimplementedGraalIntrinsics.java @@ -128,8 +128,6 @@ public UnimplementedGraalIntrinsics(Architecture arch) { // handled by an intrinsic for StringUTF16.indexOfLatin1Unsafe "java/lang/StringUTF16.indexOfLatin1([BI[BII)I", "java/lang/StringUTF16.indexOfLatin1([B[B)I", - // implemented through lowering - "java/lang/ref/Reference.get0()Ljava/lang/Object;", // Relevant for Java flight recorder // [GR-10106] These JFR intrinsics are used for firing socket/file events // via Java instrumentation and are of low priority.