X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mono%2Fmini%2Fmini-native-types.c;h=3f0540ff5fe527eeb7de9fe776ef5554110f5ae1;hb=6f20e306e0b9409995f0f3dace16621886d83572;hp=6e461b806b461d133a7ecd56912a48c49d441354;hpb=cfeadc51e89f1af952323bb2779066d6813a54ec;p=mono.git diff --git a/mono/mini/mini-native-types.c b/mono/mini/mini-native-types.c index 6e461b806b4..3f0540ff5fe 100644 --- a/mono/mini/mini-native-types.c +++ b/mono/mini/mini-native-types.c @@ -1,5 +1,6 @@ -/* - * magic-types.c: intrinsics for variable sized int/floats +/** + * \file + * intrinsics for variable sized int/floats * * Author: * Rodrigo Kumpera (kumpera@gmail.com) @@ -125,9 +126,6 @@ static const MagicTypeInfo type_info[] = { { 2, STACK_R8, STACK_R8, STACK_R8, OP_FCONV_TO_R8, OP_FCONV_TO_R4, OP_FMOVE, 0, 0, OP_PT_STORE_FP_MEMBASE_REG, 0 }, }; -static inline gboolean mono_class_is_magic_int (MonoClass *klass); -static inline gboolean mono_class_is_magic_float (MonoClass *klass); - static inline gboolean type_size (MonoCompile *cfg, MonoType *type) @@ -351,10 +349,15 @@ mono_class_is_magic_assembly (MonoClass *klass) return TRUE; if (!strcmp ("Xamarin.WatchOS", klass->image->assembly_name)) return TRUE; + /* regression test suite */ + if (!strcmp ("builtin-types", klass->image->assembly_name)) + return TRUE; + if (!strcmp ("mini_tests", klass->image->assembly_name)) + return TRUE; return FALSE; } -static inline gboolean +gboolean mono_class_is_magic_int (MonoClass *klass) { static MonoClass *magic_nint_class; @@ -387,7 +390,7 @@ mono_class_is_magic_int (MonoClass *klass) return FALSE; } -static inline gboolean +gboolean mono_class_is_magic_float (MonoClass *klass) { static MonoClass *magic_nfloat_class; @@ -411,8 +414,9 @@ mono_class_is_magic_float (MonoClass *klass) MonoClassField *value_field = mono_class_get_field_from_name (klass, "v"); g_assert (value_field); MonoType *t = mono_field_get_type (value_field); - g_assert (t->type == mini_native_type_replace_type (&klass->byval_arg)->type); - + MonoType *native = mini_native_type_replace_type (&klass->byval_arg); + if (t->type != native->type) + g_error ("Assembly used for native types '%s' doesn't match this runtime, %s is mapped to %s, expecting %s.\n", klass->image->name, klass->name, mono_type_full_name (t), mono_type_full_name (native)); return TRUE; } return FALSE;