dotgnu-pnet-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[dotgnu-pnet-commits] libjit ChangeLog jit/jit-reg-alloc.c


From: Aleksey Demakov
Subject: [dotgnu-pnet-commits] libjit ChangeLog jit/jit-reg-alloc.c
Date: Tue, 28 Nov 2006 20:26:42 +0000

CVSROOT:        /sources/dotgnu-pnet
Module name:    libjit
Changes by:     Aleksey Demakov <avd>   06/11/28 20:26:42

Modified files:
        .              : ChangeLog 
        jit            : jit-reg-alloc.c 

Log message:
        fix bug freeing stack register that is not on the stack top

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/libjit/ChangeLog?cvsroot=dotgnu-pnet&r1=1.284&r2=1.285
http://cvs.savannah.gnu.org/viewcvs/libjit/jit/jit-reg-alloc.c?cvsroot=dotgnu-pnet&r1=1.46&r2=1.47

Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/dotgnu-pnet/libjit/ChangeLog,v
retrieving revision 1.284
retrieving revision 1.285
diff -u -b -r1.284 -r1.285
--- ChangeLog   28 Nov 2006 16:10:07 -0000      1.284
+++ ChangeLog   28 Nov 2006 20:26:42 -0000      1.285
@@ -1,3 +1,8 @@
+2006-11-29  Aleksey Demakov  <address@hidden>
+
+       * jit/jit-reg-alloc.c (save_value): fix bug freeing stack register
+       that is not on the stack top.
+
 2006-11-27  Kirill Kononenko  <address@hidden>
 
        * jit/jit-rules-x86.c (throw_builtin):

Index: jit/jit-reg-alloc.c
===================================================================
RCS file: /sources/dotgnu-pnet/libjit/jit/jit-reg-alloc.c,v
retrieving revision 1.46
retrieving revision 1.47
diff -u -b -r1.46 -r1.47
--- jit/jit-reg-alloc.c 26 Nov 2006 12:05:02 -0000      1.46
+++ jit/jit-reg-alloc.c 28 Nov 2006 20:26:42 -0000      1.47
@@ -1875,7 +1875,7 @@
        {
                if(free)
                {
-                       free_value(gen, value, reg, other_reg, (free == 2));
+                       free_value(gen, value, reg, other_reg, 0);
                }
                return;
        }
@@ -1895,7 +1895,9 @@
                        exch_stack_top(gen, reg, 0);
                }
 
-               if(free && gen->contents[top].num_values == 1)
+               if(free)
+               {
+                       if(gen->contents[top].num_values == 1)
                {
                        _jit_gen_spill_top(gen, top, value, 1);
                        --(gen->reg_stack_top);
@@ -1904,17 +1906,23 @@
                {
                        _jit_gen_spill_top(gen, top, value, 0);
                }
+                       unbind_value(gen, value, top, 0);
+               }
+               else
+               {
+                       _jit_gen_spill_top(gen, top, value, 0);
+               }
        }
        else
 #endif
        {
                _jit_gen_spill_reg(gen, reg, other_reg, value);
-       }
-
        if(free)
        {
                unbind_value(gen, value, reg, other_reg);
        }
+       }
+
        value->in_frame = 1;
 }
 




reply via email to

[Prev in Thread] Current Thread [Next in Thread]