Skip to content

Commit

Permalink
Merge pull request #19647 from zakkak/fix-19645
Browse files Browse the repository at this point in the history
Fix backwards compatibility with GraalVM/Mandrel 20.3 LCMS substitutions
  • Loading branch information
gsmet authored Aug 25, 2021
2 parents 490c98d + 5efc4ca commit 936a66d
Show file tree
Hide file tree
Showing 4 changed files with 38 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,8 @@

import com.oracle.svm.core.annotate.Substitute;
import com.oracle.svm.core.annotate.TargetClass;
import com.oracle.svm.core.jdk.JDK16OrEarlier;

import io.quarkus.runtime.util.JavaVersionUtil.JDK16OrEarlier;

@TargetClass(className = "sun.java2d.cmm.lcms.LCMS", onlyWith = JDK16OrEarlier.class)
final class Target_sun_java2d_cmm_lcms_LCMS {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,8 @@

import com.oracle.svm.core.annotate.Substitute;
import com.oracle.svm.core.annotate.TargetClass;
import com.oracle.svm.core.jdk.JDK17OrLater;

import io.quarkus.runtime.util.JavaVersionUtil.JDK17OrLater;

@TargetClass(className = "sun.java2d.cmm.lcms.LCMS", onlyWith = JDK17OrLater.class)
final class Target_sun_java2d_cmm_lcms_LCMS_JDK17 {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,10 @@
import com.oracle.svm.core.annotate.Alias;
import com.oracle.svm.core.annotate.RecomputeFieldValue;
import com.oracle.svm.core.annotate.TargetClass;
import com.oracle.svm.core.jdk.JDK17OrLater;

@TargetClass(className = "sun.security.jca.JCAUtil", onlyWith = JDK17OrLater.class)
import io.quarkus.runtime.util.JavaVersionUtil;

@TargetClass(className = "sun.security.jca.JCAUtil", onlyWith = JavaVersionUtil.JDK17OrLater.class)
public final class Target_sun_security_jca_JCAUtil {

@Alias
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package io.quarkus.runtime.util;

import java.util.function.BooleanSupplier;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

Expand All @@ -10,6 +11,8 @@ public class JavaVersionUtil {
private static boolean IS_JAVA_11_OR_NEWER;
private static boolean IS_JAVA_13_OR_NEWER;
private static boolean IS_GRAALVM_JDK;
private static boolean IS_JAVA_16_OR_OLDER;
private static boolean IS_JAVA_17_OR_NEWER;

static {
performChecks();
Expand All @@ -22,9 +25,13 @@ static void performChecks() {
int first = Integer.parseInt(matcher.group(1));
IS_JAVA_11_OR_NEWER = (first >= 11);
IS_JAVA_13_OR_NEWER = (first >= 13);
IS_JAVA_16_OR_OLDER = (first <= 16);
IS_JAVA_17_OR_NEWER = (first >= 17);
} else {
IS_JAVA_11_OR_NEWER = false;
IS_JAVA_13_OR_NEWER = false;
IS_JAVA_16_OR_OLDER = false;
IS_JAVA_17_OR_NEWER = false;
}

String vmVendor = System.getProperty("java.vm.vendor");
Expand All @@ -39,7 +46,31 @@ public static boolean isJava13OrHigher() {
return IS_JAVA_13_OR_NEWER;
}

public static boolean isJava16OrLower() {
return IS_JAVA_16_OR_OLDER;
}

public static boolean isJava17OrHigher() {
return IS_JAVA_17_OR_NEWER;
}

public static boolean isGraalvmJdk() {
return IS_GRAALVM_JDK;
}

/* Clone of com.oracle.svm.core.jdk.JDK17OrLater to work around #19645 issue with GraalVM 20.3 */
public static class JDK17OrLater implements BooleanSupplier {
@Override
public boolean getAsBoolean() {
return JavaVersionUtil.isJava17OrHigher();
}
}

/* Clone of com.oracle.svm.core.jdk.JDK16OrEarlier to work around #19645 issue with GraalVM 20.3 */
public static class JDK16OrEarlier implements BooleanSupplier {
@Override
public boolean getAsBoolean() {
return JavaVersionUtil.isJava16OrLower();
}
}
}

0 comments on commit 936a66d

Please sign in to comment.