Author: zoltan
Date: 2005-05-10 16:46:34 -0400 (Tue, 10 May 2005)
New Revision: 44352

Modified:
   trunk/mono/mono/mini/ChangeLog
   trunk/mono/mono/mini/cpu-amd64.md
   trunk/mono/mono/mini/mini-amd64.c
Log:
2005-05-10  Zoltan Varga  <[EMAIL PROTECTED]>

        * mini-amd64.c (mono_arch_output_basic_block): Fix stack space leakage
        in float_neg. Fixes #74897.

        * mini-amd64.c (emit_call): Fix another near call bug.


Modified: trunk/mono/mono/mini/ChangeLog
===================================================================
--- trunk/mono/mono/mini/ChangeLog      2005-05-10 20:45:34 UTC (rev 44351)
+++ trunk/mono/mono/mini/ChangeLog      2005-05-10 20:46:34 UTC (rev 44352)
@@ -1,3 +1,10 @@
+2005-05-10  Zoltan Varga  <[EMAIL PROTECTED]>
+
+       * mini-amd64.c (mono_arch_output_basic_block): Fix stack space leakage
+       in float_neg. Fixes #74897.
+
+       * mini-amd64.c (emit_call): Fix another near call bug.
+
 2005-05-06  Sebastien Pouliot  <[EMAIL PROTECTED]>
 
        * declsec.c: Keep the appdomain information in the structure. Added a 

Modified: trunk/mono/mono/mini/cpu-amd64.md
===================================================================
--- trunk/mono/mono/mini/cpu-amd64.md   2005-05-10 20:45:34 UTC (rev 44351)
+++ trunk/mono/mono/mini/cpu-amd64.md   2005-05-10 20:46:34 UTC (rev 44352)
@@ -429,7 +429,7 @@
 float_div_un: dest:f src1:f src2:f len:5
 float_rem: dest:f src1:f src2:f len:19
 float_rem_un: dest:f src1:f src2:f len:19
-float_neg: dest:f src1:f len:19
+float_neg: dest:f src1:f len:23
 float_not: dest:f src1:f len:3
 float_conv_to_i1: dest:i src1:f len:49
 float_conv_to_i2: dest:i src1:f len:49

Modified: trunk/mono/mono/mini/mini-amd64.c
===================================================================
--- trunk/mono/mono/mini/mini-amd64.c   2005-05-10 20:45:34 UTC (rev 44351)
+++ trunk/mono/mono/mini/mini-amd64.c   2005-05-10 20:46:34 UTC (rev 44352)
@@ -1311,6 +1311,11 @@
                                                if ((((guint64)data) >> 32) == 
0)
                                                        near_call = TRUE;
                                        }
+                                       else if (info->func == info->wrapper) {
+                                               /* No wrapper */
+                                               if ((((guint64)info->func) >> 
32) == 0)
+                                                       near_call = TRUE;
+                                       }
                                        else
                                                near_call = TRUE;
                                }
@@ -4347,6 +4352,7 @@
                                amd64_push_reg (code, AMD64_R11);
                                amd64_push_reg (code, AMD64_R11);
                                amd64_sse_xorpd_reg_membase (code, ins->dreg, 
AMD64_RSP, 0);
+                               amd64_alu_reg_imm (code, X86_ADD, AMD64_RSP, 
16);
                        }
                        else
                                amd64_fchs (code);

_______________________________________________
Mono-patches maillist  -  [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches

Reply via email to