[interp] reference domain that owns method in RuntimeMethod and couple other domain...
[mono.git] / mono / mini / mini-native-types.c
index 5d66853ece98745dcfe334f57c49d357517159d9..9732a3f94fc5e29b76c8651bb17710ccfe0e18a7 100644 (file)
@@ -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)
@@ -406,6 +407,14 @@ mono_class_is_magic_float (MonoClass *klass)
 
        if (strcmp ("nfloat", klass->name) == 0) {
                magic_nfloat_class = klass;
+
+               /* Assert that we are using the matching assembly */
+               MonoClassField *value_field = mono_class_get_field_from_name (klass, "v");
+               g_assert (value_field);
+               MonoType *t = mono_field_get_type (value_field);
+               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;