--- a/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot.test/src/org/graalvm/compiler/hotspot/test/CheckGraalIntrinsics.java Thu Oct 17 20:27:44 2019 +0100
+++ b/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot.test/src/org/graalvm/compiler/hotspot/test/CheckGraalIntrinsics.java Thu Oct 17 20:53:35 2019 +0100
@@ -24,6 +24,9 @@
package org.graalvm.compiler.hotspot.test;
+import static org.graalvm.compiler.hotspot.meta.HotSpotGraphBuilderPlugins.aesDecryptName;
+import static org.graalvm.compiler.hotspot.meta.HotSpotGraphBuilderPlugins.aesEncryptName;
+
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Arrays;
@@ -41,6 +44,7 @@
import org.graalvm.compiler.api.test.Graal;
import org.graalvm.compiler.hotspot.GraalHotSpotVMConfig;
import org.graalvm.compiler.hotspot.HotSpotGraalRuntimeProvider;
+import org.graalvm.compiler.hotspot.meta.HotSpotGraphBuilderPlugins;
import org.graalvm.compiler.hotspot.meta.HotSpotProviders;
import org.graalvm.compiler.nodes.graphbuilderconf.GraphBuilderConfiguration.Plugins;
import org.graalvm.compiler.nodes.graphbuilderconf.InvocationPlugin;
@@ -60,6 +64,7 @@
import jdk.vm.ci.meta.MetaUtil;
import jdk.vm.ci.meta.MethodHandleAccessProvider.IntrinsicMethod;
import jdk.vm.ci.meta.ResolvedJavaMethod;
+import jdk.vm.ci.sparc.SPARC;
/**
* Checks the intrinsics implemented by Graal against the set of intrinsics declared by HotSpot. The
@@ -371,7 +376,7 @@
add(ignore,
"java/lang/Math.fma(DDD)D",
"java/lang/Math.fma(FFF)F");
- } else if (!(arch instanceof AMD64)) {
+ } else if (arch instanceof SPARC) {
add(toBeInvestigated,
"java/lang/Math.fma(DDD)D",
"java/lang/Math.fma(FFF)F");
@@ -386,6 +391,10 @@
if (isJDK11OrHigher()) {
// Relevant for Java flight recorder
add(toBeInvestigated,
+ "java/lang/CharacterDataLatin1.isDigit(I)Z",
+ "java/lang/CharacterDataLatin1.isLowerCase(I)Z",
+ "java/lang/CharacterDataLatin1.isUpperCase(I)Z",
+ "java/lang/CharacterDataLatin1.isWhitespace(I)Z",
"jdk/jfr/internal/JVM.getEventWriter()Ljava/lang/Object;");
if (!config.useBase64Intrinsics()) {
add(ignore,
@@ -393,14 +402,6 @@
}
}
- if (isJDK12OrHigher()) {
- add(toBeInvestigated,
- "java/lang/CharacterDataLatin1.isDigit(I)Z",
- "java/lang/CharacterDataLatin1.isLowerCase(I)Z",
- "java/lang/CharacterDataLatin1.isUpperCase(I)Z",
- "java/lang/CharacterDataLatin1.isWhitespace(I)Z");
- }
-
if (isJDK13OrHigher()) {
add(toBeInvestigated,
"java/lang/Math.abs(I)I",
@@ -409,6 +410,16 @@
"java/lang/Math.max(FF)F",
"java/lang/Math.min(DD)D",
"java/lang/Math.min(FF)F");
+ add(toBeInvestigated,
+ "jdk/internal/misc/Unsafe.writeback0(J)V",
+ "jdk/internal/misc/Unsafe.writebackPostSync0()V",
+ "jdk/internal/misc/Unsafe.writebackPreSync0()V");
+ }
+
+ if (isJDK14OrHigher()) {
+ add(toBeInvestigated,
+ "com/sun/crypto/provider/ElectronicCodeBook.implECBDecrypt([BII[BI)I",
+ "com/sun/crypto/provider/ElectronicCodeBook.implECBEncrypt([BII[BI)I");
}
if (!config.inlineNotify()) {
@@ -505,21 +516,17 @@
"java/util/zip/CRC32C.updateDirectByteBuffer(IJII)I");
}
+ boolean implNames = HotSpotGraphBuilderPlugins.cbcUsesImplNames(config);
+ String cbcEncryptName = implNames ? "implEncrypt" : "encrypt";
+ String cbcDecryptName = implNames ? "implDecrypt" : "decrypt";
+
// AES intrinsics
if (!config.useAESIntrinsics) {
- if (isJDK9OrHigher()) {
- add(ignore,
- "com/sun/crypto/provider/AESCrypt.implDecryptBlock([BI[BI)V",
- "com/sun/crypto/provider/AESCrypt.implEncryptBlock([BI[BI)V",
- "com/sun/crypto/provider/CipherBlockChaining.implDecrypt([BII[BI)I",
- "com/sun/crypto/provider/CipherBlockChaining.implEncrypt([BII[BI)I");
- } else {
- add(ignore,
- "com/sun/crypto/provider/AESCrypt.decryptBlock([BI[BI)V",
- "com/sun/crypto/provider/AESCrypt.encryptBlock([BI[BI)V",
- "com/sun/crypto/provider/CipherBlockChaining.decrypt([BII[BI)I",
- "com/sun/crypto/provider/CipherBlockChaining.encrypt([BII[BI)I");
- }
+ add(ignore,
+ "com/sun/crypto/provider/AESCrypt." + aesDecryptName + "([BI[BI)V",
+ "com/sun/crypto/provider/AESCrypt." + aesEncryptName + "([BI[BI)V",
+ "com/sun/crypto/provider/CipherBlockChaining." + cbcDecryptName + "([BII[BI)I",
+ "com/sun/crypto/provider/CipherBlockChaining." + cbcEncryptName + "([BII[BI)I");
}
// BigInteger intrinsics
@@ -568,23 +575,27 @@
}
private static boolean isJDK9OrHigher() {
- return JavaVersionUtil.JAVA_SPECIFICATION_VERSION >= 9;
+ return JavaVersionUtil.JAVA_SPEC >= 9;
}
private static boolean isJDK10OrHigher() {
- return JavaVersionUtil.JAVA_SPECIFICATION_VERSION >= 10;
+ return JavaVersionUtil.JAVA_SPEC >= 10;
}
private static boolean isJDK11OrHigher() {
- return JavaVersionUtil.JAVA_SPECIFICATION_VERSION >= 11;
+ return JavaVersionUtil.JAVA_SPEC >= 11;
}
private static boolean isJDK12OrHigher() {
- return JavaVersionUtil.JAVA_SPECIFICATION_VERSION >= 12;
+ return JavaVersionUtil.JAVA_SPEC >= 12;
}
private static boolean isJDK13OrHigher() {
- return JavaVersionUtil.JAVA_SPECIFICATION_VERSION >= 13;
+ return JavaVersionUtil.JAVA_SPEC >= 13;
+ }
+
+ private static boolean isJDK14OrHigher() {
+ return JavaVersionUtil.JAVA_SPEC >= 14;
}
public interface Refiner {