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.

Reply via email to