Merge pull request #901 from Blewzman/FixAggregateExceptionGetBaseException
[mono.git] / mono / mini / exceptions-arm.c
index ea128fd8b2a8a6a2f6fdd424a95522d63fd94c2d..a6e75730df06d21367c1a1e085a79c7dc759898c 100644 (file)
@@ -60,10 +60,10 @@ mono_arch_get_restore_context (MonoTrampInfo **info, gboolean aot)
 
        ctx_reg = ARMREG_R0;
 
-#if defined(ARM_FPU_VFP)
-       ARM_ADD_REG_IMM8 (code, ARMREG_IP, ctx_reg, G_STRUCT_OFFSET (MonoContext, fregs));
-       ARM_FLDMD (code, ARM_VFP_D0, 16, ARMREG_IP);
-#endif
+       if (!mono_arch_is_soft_float ()) {
+               ARM_ADD_REG_IMM8 (code, ARMREG_IP, ctx_reg, G_STRUCT_OFFSET (MonoContext, fregs));
+               ARM_FLDMD (code, ARM_VFP_D0, 16, ARMREG_IP);
+       }
 
        /* move pc to PC */
        ARM_LDR_IMM (code, ARMREG_IP, ctx_reg, G_STRUCT_OFFSET (MonoContext, pc));
@@ -216,12 +216,12 @@ get_throw_trampoline (int size, gboolean corlib, gboolean rethrow, gboolean llvm
        mono_add_unwind_op_offset (unwind_ops, code, start, ARMREG_LR, - sizeof (mgreg_t));
 
        /* Save fp regs */
-       ARM_SUB_REG_IMM8 (code, ARMREG_SP, ARMREG_SP, sizeof (double) * 16);
-       cfa_offset += sizeof (double) * 16;
-       mono_add_unwind_op_def_cfa_offset (unwind_ops, code, start, cfa_offset);
-#if defined(ARM_FPU_VFP)
-       ARM_FSTMD (code, ARM_VFP_D0, 16, ARMREG_SP);
-#endif
+       if (!mono_arch_is_soft_float ()) {
+               ARM_SUB_REG_IMM8 (code, ARMREG_SP, ARMREG_SP, sizeof (double) * 16);
+               cfa_offset += sizeof (double) * 16;
+               mono_add_unwind_op_def_cfa_offset (unwind_ops, code, start, cfa_offset);
+               ARM_FSTMD (code, ARM_VFP_D0, 16, ARMREG_SP);
+       }
 
        /* Param area */
        ARM_SUB_REG_IMM8 (code, ARMREG_SP, ARMREG_SP, 8);
@@ -401,10 +401,7 @@ mono_arch_find_jit_info (MonoDomain *domain, MonoJitTlsData *jit_tls,
 
                frame->type = FRAME_TYPE_MANAGED;
 
-               if (ji->from_aot)
-                       unwind_info = mono_aot_get_unwind_info (ji, &unwind_info_len);
-               else
-                       unwind_info = mono_get_cached_unwind_info (ji->used_regs, &unwind_info_len);
+               unwind_info = mono_jinfo_get_unwind_info (ji, &unwind_info_len);
 
                /*
                printf ("%s %p %p\n", ji->d.method->name, ji->code_start, ip);