Skip to content

Commit c0959ee

Browse files
committed
[GR-53458] JVMCIVersionCheck should only consider release and early-access OpenJDK version
PullRequest: graal/17517
2 parents c8e9e12 + de871f0 commit c0959ee

File tree

2 files changed

+34
-13
lines changed

2 files changed

+34
-13
lines changed

compiler/src/jdk.graal.compiler.test/src/jdk/graal/compiler/hotspot/test/JVMCIVersionCheckOpenJDKTest.java

Lines changed: 20 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -24,19 +24,19 @@
2424
*/
2525
package jdk.graal.compiler.hotspot.test;
2626

27-
import org.junit.Assert;
28-
import org.junit.Test;
29-
30-
import jdk.graal.compiler.core.test.GraalCompilerTest;
31-
import jdk.graal.compiler.hotspot.JVMCIVersionCheck;
32-
import org.junit.runner.RunWith;
33-
import org.junit.runners.Parameterized;
27+
import static jdk.graal.compiler.hotspot.JVMCIVersionCheck.DEFAULT_VENDOR_ENTRY;
3428

3529
import java.util.Collection;
3630
import java.util.List;
3731
import java.util.Map;
3832

39-
import static jdk.graal.compiler.hotspot.JVMCIVersionCheck.DEFAULT_VENDOR_ENTRY;
33+
import org.junit.Assert;
34+
import org.junit.Test;
35+
import org.junit.runner.RunWith;
36+
import org.junit.runners.Parameterized;
37+
38+
import jdk.graal.compiler.core.test.GraalCompilerTest;
39+
import jdk.graal.compiler.hotspot.JVMCIVersionCheck;
4040

4141
/**
4242
* Tests that {@link JVMCIVersionCheck} handles OpenJDK versions correctly.
@@ -54,6 +54,18 @@ public static Collection<Object[]> data() {
5454
expectFail("99+99-jvmci-b02", "99+98"),
5555
expectPass("99+99-jvmci-b02", "99+99"),
5656
expectPass("99+99-jvmci-b02", "99+100"),
57+
/*
58+
* Also if comparing against an OpenJDK early access version.
59+
*/
60+
expectFail("99+99-jvmci-b02", "99-ea+98"),
61+
expectPass("99+99-jvmci-b02", "99-ea+99"),
62+
expectPass("99+99-jvmci-b02", "99-ea+100"),
63+
/*
64+
* OpenJDK version with unknown $PRE value are ignored.
65+
*/
66+
expectPass("99+99-jvmci-b02", "99-something+98"),
67+
expectPass("99+99-jvmci-b02", "99-something+99"),
68+
expectPass("99+99-jvmci-b02", "99-something+100"),
5769
/*
5870
* If comparing a LabsJDK version against a LabsJDK version, respect the
5971
* JVMCI build.

compiler/src/jdk.graal.compiler/src/jdk/graal/compiler/hotspot/JVMCIVersionCheck.java

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -117,8 +117,11 @@ static Version parse(String vmVersion) {
117117
}
118118
} else {
119119
try {
120-
// assume OpenJDK version
121-
return createOpenJDKVersion(stripVersion(vmVersion));
120+
var rv = Runtime.Version.parse(vmVersion);
121+
if (rv.pre().isEmpty() || "ea".equals(rv.pre().get())) {
122+
// release or early access build
123+
return createOpenJDKVersion(stripVersion(rv));
124+
}
122125
} catch (IllegalArgumentException e) {
123126
// unexpected version string -> be on the safe side and ignore
124127
}
@@ -130,8 +133,7 @@ static Version parse(String vmVersion) {
130133
* Returns a {@linkplain java.lang.Runtime.Version version string} without
131134
* {@link java.lang.Runtime.Version#pre()} and {@link java.lang.Runtime.Version#optional()}.
132135
*/
133-
private static String stripVersion(String versionString) {
134-
var rv = Runtime.Version.parse(versionString);
136+
private static String stripVersion(Runtime.Version rv) {
135137
var sb = new StringBuilder(rv.version().stream().map(Object::toString).collect(Collectors.joining(".")));
136138
if (rv.build().isPresent()) {
137139
sb.append("+").append(rv.build().get());
@@ -322,7 +324,14 @@ private void run(boolean exitOnFailure, Version minVersion, PrintFormat format)
322324
// Allow local builds
323325
return;
324326
}
325-
// A "labsjdk"
327+
if (!vmVersion.contains("-jvmci-")) {
328+
var rv = Runtime.Version.parse(vmVersion);
329+
if (rv.pre().isPresent() && !"ea".equals(rv.pre().get())) {
330+
// Not a release or early access OpenJDK version
331+
return;
332+
}
333+
}
334+
// A "labsjdk" or a known OpenJDK
326335
if (minVersion == null) {
327336
failVersionCheck(exitOnFailure, "No minimum JVMCI version specified for JDK version %s.%n", javaSpecVersion);
328337
}

0 commit comments

Comments
 (0)