[interp] fix conv.u4.r8 on arm64
authorBernhard Urban <bernhard.urban@xamarin.com>
Wed, 17 May 2017 11:40:57 +0000 (13:40 +0200)
committerBernhard Urban <bernhard.urban@xamarin.com>
Wed, 17 May 2017 15:36:43 +0000 (17:36 +0200)
mono/mini/interp/interp.c

index 8cf7bec464ca320de00f1ab8ef38f8ef6dd6e57b..b9b1edc4f22b7d2c22af1ad659489228c798a51c 100644 (file)
@@ -3418,7 +3418,11 @@ ves_exec_method_with_context (MonoInvocation *frame, ThreadContext *context, uns
                        ++ip;
                        MINT_IN_BREAK;
                MINT_IN_CASE(MINT_CONV_U4_R8)
-                       sp [-1].data.i = (guint32)sp [-1].data.f;
+                       /* needed on arm64 */
+                       if (isinf (sp [-1].data.f))
+                               sp [-1].data.i = 0;
+                       else
+                               sp [-1].data.i = (guint32)sp [-1].data.f;
                        ++ip;
                        MINT_IN_BREAK;
                MINT_IN_CASE(MINT_CONV_I8_I4)