Hmm, with that code reversed I now have failure only on Windows:
V [jvm.dll+0x43abb7] report_vm_error+0x117 (debug.cpp:264)
V [jvm.dll+0x8a222e] LibraryCallKit::load_field_from_object+0x1ae
(library_call.cpp:5732)
V [jvm.dll+0x88c3ea] LibraryCallKit::get_state_from_digestBase_object+0x3a
(library_call.cpp:6614)
V [jvm.dll+0x8909d5] LibraryCallKit::inline_digestBase_implCompressMB+0x115
(library_call.cpp:6598)
V [jvm.dll+0x8908b1] LibraryCallKit::inline_digestBase_implCompressMB+0x411
(library_call.cpp:6578)
V [jvm.dll+0x8a5b2d] LibraryCallKit::try_to_inline+0x184d
(library_call.cpp:836)
The bug is in the same code as before - typreo due to renaming. So the code
should be:
if (long_state) {
state = get_long_state_from_digestBase_object(obj);
} else {
state = get_state_from_digestBase_object(obj);
}
BTW, Ludovic, you need to add next change [1] to Graal's test to avoid its
failure.
Thanks,
Vladimir K
[1]
src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot.test/src/org/graalvm/compiler/hotspot/test/CheckGraalIntrinsics.java
@@ -423,6 +423,11 @@
"java/math/BigInteger.shiftRightImplWorker([I[IIII)V");
}
+ if (isJDK16OrHigher()) {
+ add(toBeInvestigated,
+ "sun/security/provider/MD5.implCompress0([BI)V");
+ }
+
if (!config.inlineNotify()) {
add(ignore, "java/lang/Object.notify()V");
}
@@ -593,6 +598,14 @@
return JavaVersionUtil.JAVA_SPEC >= 14;
}
+ private static boolean isJDK15OrHigher() {
+ return JavaVersionUtil.JAVA_SPEC >= 15;
+ }
+
+ private static boolean isJDK16OrHigher() {
+ return JavaVersionUtil.JAVA_SPEC >= 16;
+ }
+
public interface Refiner {
void refine(CheckGraalIntrinsics checker);
}
On 8/3/20 12:18 PM, Vladimir Kozlov wrote:
I reproduced crash with only MD5 changes on my local linux machine during
fastdebug build.
Next code in inline_digestBase_implCompressMB should be reversed (get_long_*()
should be called for long_state):
if (long_state) {
state = get_state_from_digestBase_object(digestBase_obj);
} else {
state = get_long_state_from_digestBase_object(digestBase_obj);
}
Vladimir K
On 8/3/20 11:52 AM, Ludovic Henry wrote:
But it looks like it has more changes (windows_aarch64) then just MD5 intrinsic.
I will retest again with removed other changes.
That looks like a mistake with me learning to use Mercurial, sorry about that.
The only patch you need is `8250902: Implement MD5 Intrinsics on x86`, all the
others are my mistake.