klass = mini_get_class (method, token, generic_context);
CHECK_TYPELOAD (klass);
+ // Common in generic code:
+ // box T + unbox.any T -> nop
+ if ((td->last_ins->opcode == MINT_BOX || td->last_ins->opcode == MINT_BOX_VT) &&
+ (td->sp - 1)->klass == klass && !td->is_bb_start[in_offset]) {
+ gboolean is_vt = td->last_ins->opcode == MINT_BOX_VT;
+ interp_clear_ins(td, td->last_ins);
+ if (is_vt)
+ PUSH_VT(td, mono_class_value_size(klass, NULL));
+ int mt = mint_type(m_class_get_byval_arg(klass));
+ SET_TYPE(td->sp - 1, stack_type[mt], klass);
+ td->ip += 5;
+ break;
+ }
+
if (mini_type_is_reference (m_class_get_byval_arg (klass))) {
int mt = mint_type (m_class_get_byval_arg (klass));
interp_handle_isinst (td, klass, FALSE);