MONO_EMIT_NEW_COND_EXC (s, C, "OverflowException");
}
-reg: OP_LONG_SHRUN_32 (reg) {
+reg: OP_LSHR_UN_32 (reg) {
MONO_EMIT_BIALU_IMM (s, tree, OP_LSHR_UN_IMM, state->reg1, state->left->reg1, 32);
}
}
reg: OP_LCONV_TO_OVF_I4 (reg) {
+ /* The int cast is needed for the VS compiler. See Compiler Warning (level 2) C4146. */
MONO_EMIT_NEW_COMPARE_IMM_EXC (s, GT, state->left->reg1, 0x7fffffff, "OverflowException");
- MONO_EMIT_NEW_COMPARE_IMM_EXC (s, LT, state->left->reg1, -2147483648, "OverflowException");
+ MONO_EMIT_NEW_COMPARE_IMM_EXC (s, LT, state->left->reg1, ((int)-2147483648), "OverflowException");
MONO_EMIT_UNALU (s, tree, OP_MOVE, state->reg1, state->left->reg1);
}
MONO_EMIT_UNALU (s, tree, OP_MOVE, state->reg1, state->left->reg1);
}
-reg: OP_LCONV_TO_OVF_U8 (reg) {
+reg: OP_LCONV_TO_OVF_U8 (reg),
+reg: OP_LCONV_TO_OVF_U (reg) {
MONO_EMIT_NEW_COMPARE_IMM_EXC (s, LT, state->left->reg1, 0, "OverflowException");
MONO_EMIT_UNALU (s, tree, OP_MOVE, state->reg1, state->left->reg1);
}
-reg: OP_LCONV_TO_OVF_I8 (reg) {
+reg: OP_LCONV_TO_OVF_I8 (reg),
+reg: OP_LCONV_TO_OVF_U_UN (reg) {
MONO_EMIT_UNALU (s, tree, OP_MOVE, state->reg1, state->left->reg1);
}
MONO_EMIT_UNALU (s, tree, tree->opcode, state->reg1, state->left->reg1);
}
-reg: CEE_CONV_OVF_I8 (reg) {
+reg: CEE_CONV_OVF_I8 (reg),
+reg: CEE_CONV_OVF_I (reg) {
/* Sign extend the value in the lower word into the upper word */
MONO_EMIT_UNALU (s, tree, CEE_CONV_I8, state->reg1, state->left->reg1);
}
reg: CEE_CONV_OVF_I8_UN (reg),
-reg: CEE_CONV_OVF_U8_UN (reg) {
+reg: CEE_CONV_OVF_U8_UN (reg),
+reg: CEE_CONV_OVF_I_UN (reg),
+reg: CEE_CONV_OVF_U_UN (reg) {
/* an unsigned 32 bit num always fits in an (un)signed 64 bit one */
/* Clean out the upper word */
MONO_EMIT_UNALU (s, tree, CEE_CONV_U8, state->reg1, state->left->reg1);
}
-reg: CEE_CONV_OVF_U8 (reg) {
+reg: CEE_CONV_OVF_U8 (reg),
+reg: CEE_CONV_OVF_U (reg) {
MONO_EMIT_NEW_COMPARE_IMM_EXC (s, LT, state->left->reg1, 0, "OverflowException");
MONO_EMIT_UNALU (s, tree, OP_MOVE, state->reg1, state->left->reg1);
}
mini_emit_virtual_call (s, state, tree, OP_LCALL, OP_LCALL_MEMBASE);
}
+reg: OP_LCALLVIRT_IMT (reg, reg) {
+ tree->opcode = OP_LCALLVIRT;
+ mini_emit_virtual_imt_call (s, state, tree, OP_LCALL, OP_LCALL_MEMBASE, state->right->reg1);
+}
+
reg: OP_LCALL {
tree->dreg = state->reg1;
mono_bblock_add_inst (s->cbb, tree);
}
+reg: OP_LCALL_RGCTX (reg) {
+ emit_rgctx_argument (s, tree, state->left->reg1, OP_LCALL);
+
+ tree->dreg = state->reg1;
+ mono_bblock_add_inst (s->cbb, tree);
+}
+
reg: OP_LCALL_REG (reg) {
tree->sreg1 = state->left->reg1;
tree->dreg = state->reg1;
mono_bblock_add_inst (s->cbb, tree);
}
-reg: OP_LCALL_REG (OP_ICONST) {
+reg: OP_LCALL_REG_RGCTX (reg, reg) {
+ emit_rgctx_argument (s, tree, state->right->reg1, OP_LCALL_REG);
+
+ tree->sreg1 = state->left->reg1;
+ tree->dreg = state->reg1;
+ mono_bblock_add_inst (s->cbb, tree);
+}
+
+reg: OP_LCALL_REG (OP_ICONST),
+reg: OP_LCALL_REG (OP_I8CONST) {
tree->opcode = OP_LCALL;
((MonoCallInst*)tree)->fptr = state->left->tree->inst_p0;
tree->dreg = state->reg1;
mono_bblock_add_inst (s->cbb, tree);
}
-
-
stmt: CEE_STIND_I4 (OP_REGVAR, OP_ICONST) {
tree->inst_c0 = state->right->tree->inst_c0;
tree->opcode = OP_ICONST;