2009-01-30 Zoltan Varga <vargaz@gmail.com>
authorZoltan Varga <vargaz@gmail.com>
Fri, 30 Jan 2009 13:45:39 +0000 (13:45 -0000)
committerZoltan Varga <vargaz@gmail.com>
Fri, 30 Jan 2009 13:45:39 +0000 (13:45 -0000)
* mini.c (mini_init): Emuate OP_FCONV_TO_I when using soft float.

* mini-arm.c (emit_load_volatile_arguments): Avoid an unneccesary assert.

svn path=/trunk/mono/; revision=125088

mono/mini/ChangeLog
mono/mini/mini-arm.c
mono/mini/mini.c

index 0c72e26f5b142ab69437071a3cbaefde3ab688b5..9313d624870a06dc90a0772dad9fd744eb1e920d 100644 (file)
@@ -1,5 +1,9 @@
 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
 
+       * mini.c (mini_init): Emuate OP_FCONV_TO_I when using soft float.
+
+       * mini-arm.c (emit_load_volatile_arguments): Avoid an unneccesary assert.
+
        * mini.c (mini_init): Register mono_isfinite.
 
        * jit-icalls.c (mono_isfinite): New jit icall.
index 8b9c9f9d4da137ead2d2167651989a9c97db0459..1e9397488660fbc2f377b9519e05a459fe562fa7 100644 (file)
@@ -2359,8 +2359,7 @@ emit_load_volatile_arguments (MonoCompile *cfg, guint8 *code)
                                // FIXME:
                                NOT_IMPLEMENTED;
                        } else if (ainfo->regtype == RegTypeBase) {
-                               // FIXME:
-                               NOT_IMPLEMENTED;
+                               /* Nothing to do */
                        } else if (ainfo->regtype == RegTypeFP) {
                                g_assert_not_reached ();
                        } else if (ainfo->regtype == RegTypeStructByVal) {
index f591f97d6549550f17d215108d625890c0923ad7..d68f75abed097fbca9c184453d64c415ed50fa32 100644 (file)
@@ -4737,6 +4737,9 @@ mini_init (const char *filename, const char *runtime_version)
        mono_register_opcode_emulation (OP_FCONV_TO_I4, "__emul_fconv_to_i4", "int32 double", mono_fconv_i4, FALSE);
        mono_register_opcode_emulation (OP_FCONV_TO_U1, "__emul_fconv_to_u1", "uint8 double", mono_fconv_u1, FALSE);
        mono_register_opcode_emulation (OP_FCONV_TO_U2, "__emul_fconv_to_u2", "uint16 double", mono_fconv_u2, FALSE);
+#if SIZEOF_VOID_P == 4
+       mono_register_opcode_emulation (OP_FCONV_TO_I, "__emul_fconv_to_i", "int32 double", mono_fconv_i4, FALSE);
+#endif
 
        mono_register_opcode_emulation (OP_FBEQ, "__emul_fcmp_eq", "uint32 double double", mono_fcmp_eq, FALSE);
        mono_register_opcode_emulation (OP_FBLT, "__emul_fcmp_lt", "uint32 double double", mono_fcmp_lt, FALSE);