projects
/
cacao.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merged trunk and subtype.
[cacao.git]
/
src
/
vm
/
jit
/
i386
/
emit.c
diff --git
a/src/vm/jit/i386/emit.c
b/src/vm/jit/i386/emit.c
index 68e8a9e114a38db521328867bc1c43792ab6a227..66fba15ffcc36d30922e8c46422529126a58388c 100644
(file)
--- a/
src/vm/jit/i386/emit.c
+++ b/
src/vm/jit/i386/emit.c
@@
-458,9
+458,15
@@
void emit_classcast_check(codegendata *cd, instruction *iptr, s4 condition, s4 r
case BRANCH_LE:
M_BGT(6);
break;
case BRANCH_LE:
M_BGT(6);
break;
+ case BRANCH_GE:
+ M_BLT(6);
+ break;
case BRANCH_EQ:
M_BNE(6);
break;
case BRANCH_EQ:
M_BNE(6);
break;
+ case BRANCH_NE:
+ M_BEQ(6);
+ break;
case BRANCH_ULE:
M_BBE(6);
break;
case BRANCH_ULE:
M_BBE(6);
break;
@@
-1084,6
+1090,11
@@
void emit_alu_imm_memabs(codegendata *cd, s4 opc, s4 imm, s4 disp)
}
}
}
}
+void emit_alu_memindex_reg(codegendata *cd, s4 opc, s4 disp, s4 basereg, s4 indexreg, s4 scale, s4 reg)
+{
+ *(cd->mcodeptr++) = (((u1) (opc)) << 3) + 3;
+ emit_memindex(cd, (reg),(disp),(basereg),(indexreg),(scale));
+}
void emit_test_reg_reg(codegendata *cd, s4 reg, s4 dreg)
{
void emit_test_reg_reg(codegendata *cd, s4 reg, s4 dreg)
{
@@
-1104,6
+1115,12
@@
void emit_test_imm_reg(codegendata *cd, s4 imm, s4 reg)
/*
* inc, dec operations
*/
/*
* inc, dec operations
*/
+void emit_inc_reg(codegendata *cd, s4 reg)
+{
+ *(cd->mcodeptr++) = 0xff;
+ emit_reg(0,(reg));
+}
+
void emit_dec_mem(codegendata *cd, s4 mem)
{
*(cd->mcodeptr++) = 0xff;
void emit_dec_mem(codegendata *cd, s4 mem)
{
*(cd->mcodeptr++) = 0xff;