/* return value */
{
ret_type = mono_type_get_underlying_type (sig->ret);
+ ret_type = mini_get_basic_type_from_generic (cfg, ret_type);
switch (ret_type->type) {
case MONO_TYPE_BOOLEAN:
case MONO_TYPE_I1:
case MONO_TYPE_VOID:
cinfo->ret.storage = ArgNone;
break;
- case MONO_TYPE_VAR:
- case MONO_TYPE_MVAR:
- g_assert (cfg->generic_shared);
- cinfo->ret.storage = ArgInIReg;
- cinfo->ret.reg = X86_EAX;
- break;
default:
g_error ("Can't handle as return value 0x%x", sig->ret->type);
}
continue;
}
ptype = mono_type_get_underlying_type (sig->params [i]);
+ ptype = mini_get_basic_type_from_generic (cfg, ptype);
switch (ptype->type) {
case MONO_TYPE_BOOLEAN:
case MONO_TYPE_I1:
case MONO_TYPE_R8:
add_float (&fr, &stack_size, ainfo, TRUE);
break;
- case MONO_TYPE_VAR:
- case MONO_TYPE_MVAR:
- g_assert (cfg->generic_shared);
- add_general (&gr, &stack_size, ainfo);
- break;
default:
g_error ("unexpected type 0x%x", ptype->type);
g_assert_not_reached ();