//#define DEBUG
#define REAL_PRINT_REG(text,reg) \
-g_assert (reg >= 0); \
+mono_assert (reg >= 0); \
x86_push_reg (s->code, X86_EAX); \
x86_push_reg (s->code, X86_EDX); \
x86_push_reg (s->code, X86_ECX); \
EMIT_COND_SYSTEM_EXCEPTION (X86_CC_LE, TRUE, "OverflowException");
x86_alu_reg_imm (s->code, X86_CMP, tree->left->reg1, -32768);
// fixme: check branch
- g_assert_not_reached ();
+ mono_assert_not_reached ();
x86_branch8 (s->code, X86_CC_LT, -17, TRUE);
if (tree->reg1 != tree->left->reg1)
x86_mov_reg_reg (s->code, tree->reg1, tree->left->reg1, 4);
reg: MUL_OVF_UN (reg, reg) {
//fixme: implement me
- g_assert_not_reached ();
+ mono_assert_not_reached ();
}
reg: DIV (reg, reg) {
- g_assert (tree->right->reg1 != X86_EAX);
+ mono_assert (tree->right->reg1 != X86_EAX);
if (tree->left->reg1 != X86_EAX)
x86_mov_reg_reg (s->code, X86_EAX, tree->left->reg1, 4);
x86_cdq (s->code);
x86_div_reg (s->code, tree->right->reg1, TRUE);
- g_assert (tree->reg1 == X86_EAX &&
+ mono_assert (tree->reg1 == X86_EAX &&
tree->reg2 == X86_EDX);
}
reg: DIV_UN (reg, reg) {
- g_assert (tree->right->reg1 != X86_EAX);
+ mono_assert (tree->right->reg1 != X86_EAX);
if (tree->left->reg1 != X86_EAX)
x86_mov_reg_reg (s->code, X86_EAX, tree->left->reg1, 4);
x86_cdq (s->code);
x86_div_reg (s->code, tree->right->reg1, FALSE);
- g_assert (tree->reg1 == X86_EAX &&
+ mono_assert (tree->reg1 == X86_EAX &&
tree->reg2 == X86_EDX);
}
reg: REM (reg, reg) {
- g_assert (tree->right->reg1 != X86_EAX);
+ mono_assert (tree->right->reg1 != X86_EAX);
+ mono_assert (tree->right->reg1 != X86_EDX);
if (tree->left->reg1 != X86_EAX)
x86_mov_reg_reg (s->code, X86_EAX, tree->left->reg1, 4);
+ /* sign extend to 64bit in EAX/EDX */
x86_cdq (s->code);
x86_div_reg (s->code, tree->right->reg1, TRUE);
x86_mov_reg_reg (s->code, X86_EAX, X86_EDX, 4);
- g_assert (tree->reg1 == X86_EAX &&
+ mono_assert (tree->reg1 == X86_EAX &&
tree->reg2 == X86_EDX);
}
reg: REM_UN (reg, reg) {
- g_assert (tree->right->reg1 != X86_EAX);
+ mono_assert (tree->right->reg1 != X86_EAX);
+ mono_assert (tree->right->reg1 != X86_EDX);
if (tree->left->reg1 != X86_EAX)
x86_mov_reg_reg (s->code, X86_EAX, tree->left->reg1, 4);
- x86_cdq (s->code);
+ /* zero extend to 64bit in EAX/EDX */
+ x86_mov_reg_imm (s->code, X86_EDX, 0);
x86_div_reg (s->code, tree->right->reg1, FALSE);
x86_mov_reg_reg (s->code, X86_EAX, X86_EDX, 4);
- g_assert (tree->reg1 == X86_EAX &&
+ mono_assert (tree->reg1 == X86_EAX &&
tree->reg2 == X86_EDX);
}
if (tree->reg1 != tree->left->reg1)
x86_mov_reg_reg (s->code, tree->reg1, tree->left->reg1, 4);
- g_assert (tree->reg1 != X86_ECX &&
+ mono_assert (tree->reg1 != X86_ECX &&
tree->left->reg1 != X86_ECX);
}
if (tree->reg1 != tree->left->reg1)
x86_mov_reg_reg (s->code, tree->reg1, tree->left->reg1, 4);
- g_assert (tree->reg1 != X86_ECX &&
+ mono_assert (tree->reg1 != X86_ECX &&
tree->left->reg1 != X86_ECX);
}
if (tree->reg1 != tree->left->reg1)
x86_mov_reg_reg (s->code, tree->reg1, tree->left->reg1, 4);
- g_assert (tree->reg1 != X86_ECX &&
+ mono_assert (tree->reg1 != X86_ECX &&
tree->left->reg1 != X86_ECX);
}
int size = tree->data.i;
int sa;
- g_assert (size > 0);
+ mono_assert (size > 0);
sa = size + 3;
sa &= ~3;
if (lreg == treg || rreg == treg)
treg = X86_ECX;
if (lreg == treg || rreg == treg)
- g_assert_not_reached ();
+ mono_assert_not_reached ();
if (tree->left->op != MB_TERM_NOP) {
- g_assert (lreg >= 0);
+ mono_assert (lreg >= 0);
x86_push_reg (s->code, lreg);
}
PRINT_REG ("CALL_I4", tree->reg1);
- g_assert (tree->reg1 == X86_EAX);
+ mono_assert (tree->reg1 == X86_EAX);
}
reg: CALL_I4 (this, ADDR_G) {
treg = X86_EDX;
if (tree->left->op != MB_TERM_NOP) {
- g_assert (lreg >= 0);
+ mono_assert (lreg >= 0);
x86_push_reg (s->code, lreg);
}
PRINT_REG ("CALL_I4", tree->reg1);
- g_assert (tree->reg1 == X86_EAX);
+ mono_assert (tree->reg1 == X86_EAX);
}
reg: LDFTN (reg, INTF_ADDR) {
treg = X86_EDX;
if (tree->left->op != MB_TERM_NOP) {
- g_assert (lreg >= 0);
+ mono_assert (lreg >= 0);
x86_push_reg (s->code, lreg);
}
PRINT_REG ("CALL_I4(INTERFACE)", tree->reg1);
- g_assert (tree->reg1 == X86_EAX);
+ mono_assert (tree->reg1 == X86_EAX);
}
reg: LDFTN (reg, VFUNC_ADDR) {
treg = X86_EDX;
if (tree->left->op != MB_TERM_NOP) {
- g_assert (lreg >= 0);
+ mono_assert (lreg >= 0);
x86_push_reg (s->code, lreg);
}
PRINT_REG ("CALL_I4(VIRTUAL)", tree->reg1);
- g_assert (tree->reg1 == X86_EAX);
+ mono_assert (tree->reg1 == X86_EAX);
}
stmt: CALL_VOID (this, ADDR_G) {
treg = X86_EDX;
if (tree->left->op != MB_TERM_NOP) {
- g_assert (lreg >= 0);
+ mono_assert (lreg >= 0);
x86_push_reg (s->code, lreg);
}
treg = X86_EDX;
if (tree->left->op != MB_TERM_NOP) {
- g_assert (lreg >= 0);
+ mono_assert (lreg >= 0);
x86_push_reg (s->code, lreg);
}
treg = X86_EDX;
if (tree->left->op != MB_TERM_NOP) {
- g_assert (lreg >= 0);
+ mono_assert (lreg >= 0);
x86_push_reg (s->code, lreg);
}
x86_branch8 (s->code, X86_CC_GE, 5, TRUE);
i1 = s->code;
x86_mov_reg_imm (s->code, tree->reg2, -1);
- g_assert ((s->code - i1) == 5);
+ mono_assert ((s->code - i1) == 5);
}
lreg: CONV_U8 (CONST_I4) 1 {
if (mono_regset_reg_used (s->rs, X86_ECX))
x86_pop_reg (s->code, X86_ECX);
- g_assert (tree->reg1 == X86_EAX &&
+ mono_assert (tree->reg1 == X86_EAX &&
tree->reg2 == X86_EDX);
}
if (mono_regset_reg_used (s->rs, X86_ECX))
x86_pop_reg (s->code, X86_ECX);
- g_assert (tree->reg1 == X86_EAX &&
+ mono_assert (tree->reg1 == X86_EAX &&
tree->reg2 == X86_EDX);
}
if (mono_regset_reg_used (s->rs, X86_ECX))
x86_pop_reg (s->code, X86_ECX);
- g_assert (tree->reg1 == X86_EAX &&
+ mono_assert (tree->reg1 == X86_EAX &&
tree->reg2 == X86_EDX);
}
if (mono_regset_reg_used (s->rs, X86_ECX))
x86_pop_reg (s->code, X86_ECX);
- g_assert (tree->reg1 == X86_EAX &&
+ mono_assert (tree->reg1 == X86_EAX &&
tree->reg2 == X86_EDX);
}
if (mono_regset_reg_used (s->rs, X86_ECX))
x86_pop_reg (s->code, X86_ECX);
- g_assert (tree->reg1 == X86_EAX &&
+ mono_assert (tree->reg1 == X86_EAX &&
tree->reg2 == X86_EDX);
}
if (mono_regset_reg_used (s->rs, X86_ECX))
x86_pop_reg (s->code, X86_ECX);
- g_assert (tree->reg1 == X86_EAX &&
+ mono_assert (tree->reg1 == X86_EAX &&
tree->reg2 == X86_EDX);
}
if (mono_regset_reg_used (s->rs, X86_ECX))
x86_pop_reg (s->code, X86_ECX);
- g_assert (tree->reg1 == X86_EAX &&
+ mono_assert (tree->reg1 == X86_EAX &&
tree->reg2 == X86_EDX);
}
treg = X86_EDX;
if (tree->left->op != MB_TERM_NOP) {
- g_assert (lreg >= 0);
+ mono_assert (lreg >= 0);
x86_push_reg (s->code, lreg);
}
if (ci->args_size)
x86_alu_reg_imm (s->code, X86_ADD, X86_ESP, ci->args_size);
- g_assert (tree->reg1 == X86_EAX);
- g_assert (tree->reg2 == X86_EDX);
+ mono_assert (tree->reg1 == X86_EAX);
+ mono_assert (tree->reg2 == X86_EDX);
}
lreg: CALL_I8 (this, VFUNC_ADDR) {
treg = X86_EDX;
if (tree->left->op != MB_TERM_NOP) {
- g_assert (lreg >= 0);
+ mono_assert (lreg >= 0);
x86_push_reg (s->code, lreg);
}
PRINT_REG ("CALL0_I8(VIRTUAL)", tree->reg1);
PRINT_REG ("CALL1_I8(VIRTUAL)", tree->reg2);
- g_assert (tree->reg1 == X86_EAX);
- g_assert (tree->reg2 == X86_EDX);
+ mono_assert (tree->reg1 == X86_EAX);
+ mono_assert (tree->reg2 == X86_EDX);
}
lreg: CALL_I8 (this, INTF_ADDR) {
treg = X86_EDX;
if (tree->left->op != MB_TERM_NOP) {
- g_assert (lreg >= 0);
+ mono_assert (lreg >= 0);
x86_push_reg (s->code, lreg);
}
PRINT_REG ("CALL_I8(INTERFACE)", tree->reg1);
- g_assert (tree->reg1 == X86_EAX);
- g_assert (tree->reg2 == X86_EDX);
+ mono_assert (tree->reg1 == X86_EAX);
+ mono_assert (tree->reg2 == X86_EDX);
}
stmt: RET (lreg) {
treg = X86_EDX;
if (tree->left->op != MB_TERM_NOP) {
- g_assert (lreg >= 0);
+ mono_assert (lreg >= 0);
x86_push_reg (s->code, lreg);
}
treg = X86_EDX;
if (tree->left->op != MB_TERM_NOP) {
- g_assert (lreg >= 0);
+ mono_assert (lreg >= 0);
x86_push_reg (s->code, lreg);
}
treg = X86_EDX;
if (tree->left->op != MB_TERM_NOP) {
- g_assert (lreg >= 0);
+ mono_assert (lreg >= 0);
x86_push_reg (s->code, lreg);
}
x86_push_reg (s->code, X86_EDX);
x86_push_reg (s->code, X86_ECX);
- g_assert (tree->data.i > 0);
+ mono_assert (tree->data.i > 0);
x86_push_imm (s->code, tree->data.i);
x86_push_reg (s->code, tree->right->reg1);
x86_push_reg (s->code, tree->left->reg1);
int size = tree->data.i;
int sa;
- g_assert (size > 0);
+ mono_assert (size > 0);
sa = size + 3;
sa &= ~3;