Merge pull request #3786 from lambdageek/dev-42584-take2
[mono.git] / mono / metadata / class.c
index c45974a0d5d232de4fb4d60e115b5f1c747c88ea..fa67e15b0f1404c942742c410d57ef2a714002a7 100644 (file)
@@ -2062,9 +2062,14 @@ mono_class_layout_fields (MonoClass *klass, int base_instance_size, int packing_
                }
        }
 
+       if (klass->byval_arg.type == MONO_TYPE_VAR || klass->byval_arg.type == MONO_TYPE_MVAR)
+               instance_size = sizeof (MonoObject) + mono_type_stack_size_internal (&klass->byval_arg, NULL, TRUE);
+       else if (klass->byval_arg.type == MONO_TYPE_PTR)
+               instance_size = sizeof (MonoObject) + sizeof (gpointer);
+
        /* Publish the data */
        mono_loader_lock ();
-       if (klass->instance_size && !klass->image->dynamic && top) {
+       if (klass->instance_size && !klass->image->dynamic) {
                /* Might be already set using cached info */
                g_assert (klass->instance_size == instance_size);
        } else {