Signed-off-by: Tomek Grabiec <[email protected]>
---
arch/x86/insn-selector.brg | 30 ++++++++++++++++--------------
1 files changed, 16 insertions(+), 14 deletions(-)
diff --git a/arch/x86/insn-selector.brg b/arch/x86/insn-selector.brg
index 2e7367f..85f2fa6 100644
--- a/arch/x86/insn-selector.brg
+++ b/arch/x86/insn-selector.brg
@@ -494,10 +494,11 @@ freg: OP_DREM(freg, freg) 1
select_insn(s, tree, reg_membase_insn(INSN_MOV_64_XMM_MEMBASE,
state->right->reg1, esp, 8));
select_insn(s, tree, rel_insn(INSN_CALL_REL, (unsigned long)fmod));
- method_args_cleanup(s, tree, 4);
- select_insn(s, tree, membase_insn(INSN_FSTP_64_MEMBASE, esp, -8));
- select_insn(s, tree, membase_reg_insn(INSN_MOV_64_MEMBASE_XMM, esp, -8,
state->reg1));
+ select_insn(s, tree, membase_insn(INSN_FSTP_64_MEMBASE, esp, 0));
+ select_insn(s, tree, membase_reg_insn(INSN_MOV_64_MEMBASE_XMM, esp, 0,
state->reg1));
+
+ method_args_cleanup(s, tree, 4);
}
freg: OP_FREM(freg, freg) 1
@@ -514,10 +515,11 @@ freg: OP_FREM(freg, freg) 1
select_insn(s, tree, reg_membase_insn(INSN_MOV_XMM_MEMBASE,
state->right->reg1, esp, 4));
select_insn(s, tree, rel_insn(INSN_CALL_REL, (unsigned long)fmodf));
- method_args_cleanup(s, tree, 2);
- select_insn(s, tree, membase_insn(INSN_FSTP_MEMBASE, esp, -4));
- select_insn(s, tree, membase_reg_insn(INSN_MOV_MEMBASE_XMM, esp, -4,
state->reg1));
+ select_insn(s, tree, membase_insn(INSN_FSTP_MEMBASE, esp, 0));
+ select_insn(s, tree, membase_reg_insn(INSN_MOV_MEMBASE_XMM, esp, 0,
state->reg1));
+
+ method_args_cleanup(s, tree, 2);
}
reg: OP_REM_64(reg, reg) 1
@@ -1823,16 +1825,16 @@ arg: EXPR_ARG(freg)
size = get_vmtype_size(arg_expr->vm_type);
+ select_insn(s, tree, imm_reg_insn(INSN_SUB_IMM_REG, size, esp));
+
if (arg_expr->vm_type == J_FLOAT) {
select_insn(s, tree,
- reg_membase_insn(INSN_MOV_XMM_MEMBASE, src, esp, -size));
+ reg_membase_insn(INSN_MOV_XMM_MEMBASE, src, esp, 0));
} else {
select_insn(s, tree,
- reg_membase_insn(INSN_MOV_64_XMM_MEMBASE, src, esp, -size));
+ reg_membase_insn(INSN_MOV_64_XMM_MEMBASE, src, esp, 0));
}
- select_insn(s, tree, imm_reg_insn(INSN_SUB_IMM_REG, size, esp));
-
state->reg1 = NULL;
}
%else
@@ -1877,12 +1879,12 @@ arg: EXPR_ARG(freg)
} else {
int size = get_vmtype_size(arg_expr->vm_type);
+ select_insn(s, tree, imm_reg_insn(INSN_SUB_IMM_REG, size, esp));
+
if (arg_expr->vm_type == J_FLOAT)
- select_insn(s, tree,
reg_membase_insn(INSN_MOV_XMM_MEMBASE, src, esp, -size));
+ select_insn(s, tree,
reg_membase_insn(INSN_MOV_XMM_MEMBASE, src, esp, 0));
else
- select_insn(s, tree,
reg_membase_insn(INSN_MOV_64_XMM_MEMBASE, src, esp, -size));
-
- select_insn(s, tree, imm_reg_insn(INSN_SUB_IMM_REG, size, esp));
+ select_insn(s, tree,
reg_membase_insn(INSN_MOV_64_XMM_MEMBASE, src, esp, 0));
}
state->reg1 = 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
[email protected]
https://lists.sourceforge.net/lists/listinfo/jatovm-devel