# (C) 2002 Ximian, Inc.
#
+stmt: OP_START_HANDLER {
+ MONO_EMIT_NEW_STORE_MEMBASE (s, OP_STORE_MEMBASE_REG, s->spvar->inst_basereg, s->spvar->inst_offset, X86_ESP);
+}
+
+stmt: CEE_ENDFINALLY {
+ MONO_EMIT_NEW_LOAD_MEMBASE (s, X86_ESP, s->spvar->inst_basereg, s->spvar->inst_offset);
+ tree->opcode = CEE_RET;
+ mono_bblock_add_inst (s->cbb, tree);
+}
+
+stmt: OP_ENDFILTER (reg) {
+ MONO_EMIT_NEW_UNALU (s, OP_MOVE, X86_EAX, state->left->reg1);
+ MONO_EMIT_NEW_LOAD_MEMBASE (s, X86_ESP, s->spvar->inst_basereg, s->spvar->inst_offset);
+ tree->opcode = CEE_RET;
+ mono_bblock_add_inst (s->cbb, tree);
+}
+
stmt: CEE_STIND_I8 (OP_REGVAR, lreg) {
/* this should only happen for methods returning a long */
MONO_EMIT_NEW_UNALU (s, OP_MOVE, X86_EAX, state->right->reg1);
stmt: OP_OUTARG_VT (CEE_LDOBJ (base)) {
MonoInst *vt = state->left->left->tree;
//g_print ("vt size: %d at R%d + %d\n", tree->inst_imm, vt->inst_basereg, vt->inst_offset);
+
+ if (!tree->inst_imm)
+ return;
+
if (tree->inst_imm <= 4) {
tree->opcode = OP_X86_PUSH_MEMBASE;
tree->inst_basereg = vt->inst_basereg;