This is a bug fix. The bug caused that floating point variables were
spilled as if they were a general purpose registers which led to
corruption of general purpose registers.

Signed-off-by: Tomek Grabiec <tgrab...@gmail.com>
---
 jit/compilation-unit.c |    4 ++--
 jit/interval.c         |    1 +
 jit/spill-reload.c     |    1 +
 3 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/jit/compilation-unit.c b/jit/compilation-unit.c
index 44b5c46..0dd4415 100644
--- a/jit/compilation-unit.c
+++ b/jit/compilation-unit.c
@@ -55,10 +55,10 @@ do_get_var(struct compilation_unit *cu, enum vm_type 
vm_type)
 
        ret->vreg = cu->nr_vregs++;
        ret->next = cu->var_infos;
-       ret->interval = alloc_interval(ret);
-
        ret->vm_type = vm_type;
 
+       ret->interval = alloc_interval(ret);
+
        cu->var_infos = ret;
   out:
        return ret;
diff --git a/jit/interval.c b/jit/interval.c
index 23703a1..8eb7d32 100644
--- a/jit/interval.c
+++ b/jit/interval.c
@@ -102,6 +102,7 @@ struct live_interval *alloc_interval(struct var_info *var)
                interval->reg = MACH_REG_UNASSIGNED;
                interval->fixed_reg = false;
                interval->spill_reload_reg.interval = interval;
+               interval->spill_reload_reg.vm_type = var->vm_type;
                INIT_LIST_HEAD(&interval->interval_node);
                INIT_LIST_HEAD(&interval->use_positions);
                INIT_LIST_HEAD(&interval->range_list);
diff --git a/jit/spill-reload.c b/jit/spill-reload.c
index 622966b..70a5aa9 100644
--- a/jit/spill-reload.c
+++ b/jit/spill-reload.c
@@ -141,6 +141,7 @@ spill_interval(struct live_interval *interval,
        if (!slot)
                return NULL;
 
+       assert(interval->spill_reload_reg.vm_type == 
interval->var_info->vm_type);
        spill = spill_insn(&interval->spill_reload_reg, slot);
        if (!spill)
                return NULL;
-- 
1.6.3.3


------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day 
trial. Simplify your report design, integration and deployment - and focus on 
what you do best, core application coding. Discover what's new with 
Crystal Reports now.  http://p.sf.net/sfu/bobj-july
_______________________________________________
Jatovm-devel mailing list
Jatovm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jatovm-devel

Reply via email to