Skip to content

Commit d26d896

Browse files
author
Christian Wimmer
committed
[GR-38866] [GR-45327] Enable Truffle JFR support for JDK 20 and later.
PullRequest: graal/14406
2 parents 4358898 + 2be2285 commit d26d896

File tree

6 files changed

+9
-35
lines changed

6 files changed

+9
-35
lines changed

compiler/src/org.graalvm.compiler.core.test/src/org/graalvm/compiler/core/test/MarkUnsafeAccessTest.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,6 @@
4040
import org.graalvm.compiler.phases.common.inlining.InliningPhase;
4141
import org.graalvm.compiler.phases.common.inlining.policy.InlineEverythingPolicy;
4242
import org.graalvm.compiler.phases.tiers.HighTierContext;
43-
import org.graalvm.compiler.serviceprovider.JavaVersionUtil;
4443
import org.junit.Assert;
4544
import org.junit.Assume;
4645
import org.junit.Test;
@@ -120,7 +119,6 @@ public void testStandard() throws IOException {
120119
@Test
121120
public void testCompiled() throws IOException {
122121
Assume.assumeFalse("Crashes on AArch64 (GR-8351)", System.getProperty("os.arch").equalsIgnoreCase("aarch64"));
123-
Assume.assumeTrue("JDK-8259360", JavaVersionUtil.JAVA_SPEC < 16);
124122
ResolvedJavaMethod getMethod = asResolvedJavaMethod(getMethod(ByteBuffer.class, "get", new Class<?>[]{}));
125123
ResolvedJavaType mbbClass = getMetaAccess().lookupJavaType(MappedByteBuffer.class);
126124
AssumptionResult<ResolvedJavaMethod> answer = mbbClass.findUniqueConcreteMethod(getMethod);

compiler/src/org.graalvm.compiler.hotspot.test/src/org/graalvm/compiler/hotspot/test/BoxDeoptimizationTest.java

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -24,20 +24,13 @@
2424
*/
2525
package org.graalvm.compiler.hotspot.test;
2626

27-
import static org.graalvm.compiler.serviceprovider.JavaVersionUtil.JAVA_SPEC;
28-
2927
import org.graalvm.compiler.api.directives.GraalDirectives;
3028
import org.graalvm.compiler.core.test.GraalCompilerTest;
3129
import org.junit.Assert;
32-
import org.junit.Assume;
3330
import org.junit.Test;
3431

3532
public class BoxDeoptimizationTest extends GraalCompilerTest {
3633

37-
private static void checkJDK() {
38-
Assume.assumeTrue(JAVA_SPEC >= 13);
39-
}
40-
4134
public static void testIntegerSnippet() {
4235
Object[] values = {42, -42, new Exception()};
4336
GraalDirectives.deoptimize();
@@ -47,7 +40,6 @@ public static void testIntegerSnippet() {
4740

4841
@Test
4942
public void testInteger() {
50-
checkJDK();
5143
test("testIntegerSnippet");
5244
}
5345

@@ -62,7 +54,6 @@ public static void testLongSnippet() {
6254

6355
@Test
6456
public void testLong() {
65-
checkJDK();
6657
test("testLongSnippet");
6758
}
6859

@@ -75,7 +66,6 @@ public static void testCharSnippet() {
7566

7667
@Test
7768
public void testChar() {
78-
checkJDK();
7969
test("testCharSnippet");
8070
}
8171

@@ -88,7 +78,6 @@ public static void testShortSnippet() {
8878

8979
@Test
9080
public void testShort() {
91-
checkJDK();
9281
test("testShortSnippet");
9382
}
9483

@@ -101,7 +90,6 @@ public static void testByteSnippet() {
10190

10291
@Test
10392
public void testByte() {
104-
checkJDK();
10593
test("testByteSnippet");
10694
}
10795

@@ -114,7 +102,6 @@ public static void testBooleanSnippet() {
114102

115103
@Test
116104
public void testBoolean() {
117-
checkJDK();
118105
test("testBooleanSnippet");
119106
}
120107
}

compiler/src/org.graalvm.compiler.replacements.test/src/org/graalvm/compiler/replacements/test/UnsafeBooleanAccessTest.java

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,6 @@
2727
import java.lang.reflect.Field;
2828

2929
import org.graalvm.compiler.core.test.GraalCompilerTest;
30-
import org.graalvm.compiler.serviceprovider.JavaVersionUtil;
31-
import org.junit.Assume;
32-
import org.junit.Before;
3330
import org.junit.Test;
3431

3532
public class UnsafeBooleanAccessTest extends GraalCompilerTest {
@@ -49,13 +46,6 @@ public class UnsafeBooleanAccessTest extends GraalCompilerTest {
4946
}
5047
}
5148

52-
@Before
53-
public void testJDK() {
54-
// Prior to JDK-8250825, C2 does not support reading a short field via an unaligned
55-
// Unsafe.getBoolean, so -Xcomp can crash this test.
56-
Assume.assumeTrue(JavaVersionUtil.JAVA_SPEC >= 16);
57-
}
58-
5949
public static boolean testGetBooleanSnippet() {
6050
UNSAFE.putShort(onHeapMemoryBase, onHeapMemoryOffset, (short) 0x0204);
6151
return UNSAFE.getBoolean(onHeapMemoryBase, onHeapMemoryOffset);

compiler/src/org.graalvm.compiler.truffle.compiler/src/org/graalvm/compiler/truffle/compiler/PartialEvaluator.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -459,7 +459,7 @@ private GraphBuilderConfiguration createGraphBuilderConfig(GraphBuilderConfigura
459459
}
460460

461461
protected void appendParsingNodePlugins(Plugins plugins) {
462-
if (JavaVersionUtil.JAVA_SPEC >= 16 && JavaVersionUtil.JAVA_SPEC < 19) {
462+
if (JavaVersionUtil.JAVA_SPEC < 19) {
463463
ResolvedJavaType memorySegmentProxyType = TruffleCompilerEnvironment.get().runtime().resolveType(config.lastTier().providers().getMetaAccess(),
464464
"jdk.internal.access.foreign.MemorySegmentProxy");
465465
for (ResolvedJavaMethod m : memorySegmentProxyType.getDeclaredMethods(false)) {

substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/reflect/ReflectionMetadataEncoderImpl.java

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,6 @@
6969
import org.graalvm.compiler.api.replacements.SnippetReflectionProvider;
7070
import org.graalvm.compiler.core.common.util.TypeConversion;
7171
import org.graalvm.compiler.core.common.util.UnsafeArrayTypeWriter;
72-
import org.graalvm.compiler.serviceprovider.JavaVersionUtil;
7372
import org.graalvm.nativeimage.AnnotationAccess;
7473
import org.graalvm.nativeimage.ImageSingletons;
7574
import org.graalvm.nativeimage.impl.RuntimeReflectionSupport;
@@ -323,7 +322,7 @@ private void registerEnclosingMethodInfo(Object[] enclosingMethodInfo) {
323322
private static final Method getPermittedSubclasses = ReflectionUtil.lookupMethod(true, Class.class, "getPermittedSubclasses");
324323

325324
private Class<?>[] getPermittedSubclasses(MetaAccessProvider metaAccess, Class<?> clazz) {
326-
if (JavaVersionUtil.JAVA_SPEC < 17 || (dataBuilder.getEnabledReflectionQueries(clazz) & ALL_PERMITTED_SUBCLASSES_FLAG) == 0) {
325+
if ((dataBuilder.getEnabledReflectionQueries(clazz) & ALL_PERMITTED_SUBCLASSES_FLAG) == 0) {
327326
return null;
328327
}
329328
try {
@@ -335,7 +334,7 @@ private Class<?>[] getPermittedSubclasses(MetaAccessProvider metaAccess, Class<?
335334
}
336335

337336
private Class<?>[] getNestMembers(MetaAccessProvider metaAccess, Class<?> clazz) {
338-
if (JavaVersionUtil.JAVA_SPEC < 17 || (dataBuilder.getEnabledReflectionQueries(clazz) & ALL_NEST_MEMBERS_FLAG) == 0) {
337+
if ((dataBuilder.getEnabledReflectionQueries(clazz) & ALL_NEST_MEMBERS_FLAG) == 0) {
339338
return null;
340339
}
341340
return filterDeletedClasses(metaAccess, clazz.getNestMembers());
@@ -433,9 +432,6 @@ public void addReflectionExecutableMetadata(MetaAccessProvider metaAccess, Hoste
433432
private static final Method isFieldTrustedFinal = ReflectionUtil.lookupMethod(true, Field.class, "isTrustedFinal");
434433

435434
private static boolean isTrustedFinal(Field field) {
436-
if (JavaVersionUtil.JAVA_SPEC < 17) {
437-
return false;
438-
}
439435
try {
440436
return (boolean) isFieldTrustedFinal.invoke(field);
441437
} catch (IllegalAccessException | InvocationTargetException e) {

substratevm/src/com.oracle.svm.truffle/src/com/oracle/svm/truffle/TruffleJFRFeature.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,9 @@
3232
import org.graalvm.compiler.truffle.runtime.serviceprovider.TruffleRuntimeServices;
3333
import org.graalvm.nativeimage.ImageSingletons;
3434

35+
import com.oracle.svm.core.feature.AutomaticallyRegisteredFeature;
3536
import com.oracle.svm.core.feature.InternalFeature;
3637
import com.oracle.svm.core.jfr.JfrFeature;
37-
import com.oracle.svm.core.feature.AutomaticallyRegisteredFeature;
3838
import com.oracle.svm.core.util.UserError;
3939

4040
@AutomaticallyRegisteredFeature
@@ -54,7 +54,10 @@ public void afterRegistration(AfterRegistrationAccess access) {
5454
}
5555

5656
private static boolean isEnabled() {
57-
// The substratevm JFR implementation is not yet stable on the JDK 17, see GR-38866.
58-
return ImageSingletons.contains(TruffleFeature.class) && ImageSingletons.contains(JfrFeature.class) && JavaVersionUtil.JAVA_SPEC < 17;
57+
/*
58+
* GR-38866: Does not work on JDK 17 due to the Truffle module not being open to the JFR
59+
* module, but the problematic code was removed for later JDKs.
60+
*/
61+
return ImageSingletons.contains(TruffleFeature.class) && ImageSingletons.contains(JfrFeature.class) && JavaVersionUtil.JAVA_SPEC > 17;
5962
}
6063
}

0 commit comments

Comments
 (0)