[Top][All Lists]
[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;
}