+2006-11-29 Aleksey Demakov <ademakov@gmail.com>
+
+ * jit/jit-reg-alloc.c (save_value): fix bug freeing stack register
+ that is not on the stack top.
+
2006-11-27 Kirill Kononenko <Kirill.Kononenko@gmail.com>
* jit/jit-rules-x86.c (throw_builtin):
{
if(free)
{
- free_value(gen, value, reg, other_reg, (free == 2));
+ free_value(gen, value, reg, other_reg, 0);
}
return;
}
exch_stack_top(gen, reg, 0);
}
- if(free && gen->contents[top].num_values == 1)
+ if(free)
{
- _jit_gen_spill_top(gen, top, value, 1);
- --(gen->reg_stack_top);
+ if(gen->contents[top].num_values == 1)
+ {
+ _jit_gen_spill_top(gen, top, value, 1);
+ --(gen->reg_stack_top);
+ }
+ else
+ {
+ _jit_gen_spill_top(gen, top, value, 0);
+ }
+ unbind_value(gen, value, top, 0);
}
else
{
#endif
{
_jit_gen_spill_reg(gen, reg, other_reg, value);
+ if(free)
+ {
+ unbind_value(gen, value, reg, other_reg);
+ }
}
- if(free)
- {
- unbind_value(gen, value, reg, other_reg);
- }
value->in_frame = 1;
}