introduce freg: EXPR_LOCAL and stmt_store: STMT_STORE(EXPR_TEMPORARY, EXPR_LOCAL)
Signed-off-by: Arthur Huillet <arthur.huil...@free.fr> --- arch/x86/insn-selector_32.brg | 44 +++++++++++++++++++++++++++++++++++++++- 1 files changed, 42 insertions(+), 2 deletions(-) diff --git a/arch/x86/insn-selector_32.brg b/arch/x86/insn-selector_32.brg index 4124181..cca84f2 100644 --- a/arch/x86/insn-selector_32.brg +++ b/arch/x86/insn-selector_32.brg @@ -224,7 +224,23 @@ reg: EXPR_LOCAL 1 } } -reg: EXPR_TEMPORARY +freg: EXPR_LOCAL 0 +{ + struct compilation_unit *cu = s->b_parent; + struct expression *expr; + struct stack_slot *slot; + struct var_info *result; + + expr = to_expr(tree); + slot = get_local_slot(cu->stack_frame, expr->local_index); + + result = get_fpu_var(s->b_parent); + state->reg1 = result; + + select_insn(s, tree, memlocal_reg_insn(INSN_MOV_MEMLOCAL_FREG, slot, result)); +} + +reg: EXPR_TEMPORARY 0 { struct expression *expr; @@ -1399,7 +1415,31 @@ stmt: STMT_STORE(EXPR_LOCAL, reg) } } -stmt: STMT_STORE(EXPR_TEMPORARY, reg) +stmt: STMT_STORE(EXPR_TEMPORARY, EXPR_LOCAL) 1 +{ + struct expression *exprdest, *exprsrc; + struct var_info *src, *dest; + struct statement *stmt; + struct stack_slot *slot; + + stmt = to_stmt(tree); + + exprsrc = to_expr(stmt->store_src); + exprdest = to_expr(stmt->store_dest); + + slot = get_local_slot(s->b_parent->stack_frame, exprsrc->local_index); + + dest = exprdest->tmp_low; + + select_insn(s, tree, memlocal_reg_insn(INSN_MOV_MEMLOCAL_REG, slot, dest)); + if (exprsrc->vm_type == J_LONG) { + slot = get_local_slot(s->b_parent->stack_frame, exprsrc->local_index + 1); + select_insn(s, tree, memlocal_reg_insn(INSN_MOV_MEMLOCAL_REG, slot, exprdest->tmp_high)); + } + +} + +stmt: STMT_STORE(EXPR_TEMPORARY, reg) 1 { struct expression *temp; struct var_info *src, *dest; -- 1.6.3.3 ------------------------------------------------------------------------------ _______________________________________________ Jatovm-devel mailing list Jatovm-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/jatovm-devel