Author: martin
Date: 2006-09-22 09:46:09 -0400 (Fri, 22 Sep 2006)
New Revision: 65814

Modified:
   trunk/mono/mono/metadata/ChangeLog
   trunk/mono/mono/metadata/class-internals.h
   trunk/mono/mono/metadata/class.c
   trunk/mono/mono/metadata/object.c
   trunk/mono/mono/metadata/reflection.c
Log:
2006-09-22  Martin Baulig  <[EMAIL PROTECTED]>

        Revert Paolo's change from r65776.



Modified: trunk/mono/mono/metadata/ChangeLog
===================================================================
--- trunk/mono/mono/metadata/ChangeLog  2006-09-22 12:25:25 UTC (rev 65813)
+++ trunk/mono/mono/metadata/ChangeLog  2006-09-22 13:46:09 UTC (rev 65814)
@@ -1,3 +1,7 @@
+2006-09-22  Martin Baulig  <[EMAIL PROTECTED]>
+
+       Revert Paolo's change from r65776.
+
 2006-09-21 Gert Driesen  <[EMAIL PROTECTED]>
 
         * appdomain.c: Pass NULL to mono_get_exception_file_not_found2 as
@@ -10,12 +14,6 @@
        * threadpool.c: (start_thread_or_queue) use the root domain when
        creating the thread instead of the async object one.
 
-Thu Sep 21 19:30:04 CEST 2006 Paolo Molaro <[EMAIL PROTECTED]>
-
-       * class.c, object.c, class-internals.h, reflection.c:
-       for arrays, store element_size inside MonoClass (speedup
-       for array object creation).
-
 Thu Sep 21 17:06:43 CEST 2006 Paolo Molaro <[EMAIL PROTECTED]>
 
        * icall.c: fixed CodeBase to use the file name and not the module

Modified: trunk/mono/mono/metadata/class-internals.h
===================================================================
--- trunk/mono/mono/metadata/class-internals.h  2006-09-22 12:25:25 UTC (rev 
65813)
+++ trunk/mono/mono/metadata/class-internals.h  2006-09-22 13:46:09 UTC (rev 
65814)
@@ -302,11 +302,8 @@
         * Computed object instance size, total.
         */
        int        instance_size;
+       int        class_size;
        int        vtable_size; /* number of slots */
-       union {
-               int class_size; /* size of area for static fields */
-               int element_size; /* for array types */
-       } sizes;
 
        /*
         * From the TypeDef table

Modified: trunk/mono/mono/metadata/class.c
===================================================================
--- trunk/mono/mono/metadata/class.c    2006-09-22 12:25:25 UTC (rev 65813)
+++ trunk/mono/mono/metadata/class.c    2006-09-22 13:46:09 UTC (rev 65814)
@@ -819,8 +819,7 @@
        }
 
        class->instance_size = 0;
-       if (!class->rank)
-               class->sizes.class_size = 0;
+       class->class_size = 0;
 
        if (class->parent) {
                /* For generic instances, class->parent might not have been 
initialized */
@@ -1233,10 +1232,10 @@
                        continue;
 
                size = mono_type_size (field->type, &align);
-               field->offset = class->sizes.class_size;
+               field->offset = class->class_size;
                field->offset += align - 1;
                field->offset &= ~(align - 1);
-               class->sizes.class_size = field->offset + size;
+               class->class_size = field->offset + size;
        }
 }
 
@@ -2435,7 +2434,7 @@
         */
        if (has_cached_info) {
                class->instance_size = cached_info.instance_size;
-               class->sizes.class_size = cached_info.class_size;
+               class->class_size = cached_info.class_size;
                class->packing_size = cached_info.packing_size;
                class->min_align = cached_info.min_align;
                class->blittable = cached_info.blittable;
@@ -3112,7 +3111,7 @@
 
        if (gclass->generic_class.is_dynamic) {
                klass->instance_size = gklass->instance_size;
-               klass->sizes.class_size = gklass->sizes.class_size;
+               klass->class_size = gklass->class_size;
                klass->size_inited = 1;
                klass->inited = 1;
 
@@ -3472,7 +3471,7 @@
                (eclass->flags & TYPE_ATTRIBUTE_VISIBILITY_MASK);
        class->parent = parent;
        class->instance_size = mono_class_instance_size (class->parent);
-       class->sizes.element_size = mono_class_array_element_size (eclass);
+       class->class_size = 0;
        mono_class_setup_supertypes (class);
 
        if (mono_defaults.generic_ilist_class) {
@@ -3661,12 +3660,7 @@
        if (!klass->inited)
                mono_class_init (klass);
 
-       /* in arrays, sizes.class_size is unioned with element_size
-        * and arrays have no static fields
-        */
-       if (klass->rank)
-               return 0;
-       return klass->sizes.class_size;
+       return klass->class_size;
 }
 
 /*
@@ -4482,9 +4476,7 @@
 gint32
 mono_array_element_size (MonoClass *ac)
 {
-       g_assert (ac->rank);
-       g_assert (ac->sizes.element_size);
-       return ac->sizes.element_size;
+       return mono_class_array_element_size (ac->element_class);
 }
 
 gpointer

Modified: trunk/mono/mono/metadata/object.c
===================================================================
--- trunk/mono/mono/metadata/object.c   2006-09-22 12:25:25 UTC (rev 65813)
+++ trunk/mono/mono/metadata/object.c   2006-09-22 13:46:09 UTC (rev 65814)
@@ -490,7 +490,7 @@
        int max_size;
 
        if (static_fields)
-               max_size = mono_class_data_size (class) / sizeof (gpointer);
+               max_size = class->class_size / sizeof (gpointer);
        else
                max_size = class->instance_size / sizeof (gpointer);
        if (max_size > size) {
@@ -726,7 +726,7 @@
        char *t;
        int i;
        gboolean inited = FALSE;
-       guint32 vtable_size, class_size;
+       guint32 vtable_size;
        guint32 cindex;
        guint32 constant_cols [MONO_CONSTANT_SIZE];
        gpointer iter;
@@ -785,7 +785,7 @@
 #endif
                vt->gc_descr = class->gc_descr;
 
-       if ((class_size = mono_class_data_size (class))) {
+       if (class->class_size) {
                if (class->has_static_refs) {
                        gpointer statics_gc_descr;
                        int max_set = 0;
@@ -793,16 +793,16 @@
                        gsize *bitmap;
 
                        bitmap = compute_class_bitmap (class, default_bitmap, 
sizeof (default_bitmap) * 8, 0, &max_set, TRUE);
-                       /*g_print ("bitmap 0x%x for %s.%s (size: %d)\n", bitmap 
[0], class->name_space, class->name, class_size);*/
+                       /*g_print ("bitmap 0x%x for %s.%s (size: %d)\n", bitmap 
[0], class->name_space, class->name, class->class_size);*/
                        statics_gc_descr = mono_gc_make_descr_from_bitmap 
(bitmap, max_set? max_set + 1: 0);
-                       vt->data = mono_gc_alloc_fixed (class_size, 
statics_gc_descr);
+                       vt->data = mono_gc_alloc_fixed (class->class_size, 
statics_gc_descr);
                        mono_domain_add_class_static_data (domain, class, 
vt->data, NULL);
                        if (bitmap != default_bitmap)
                                g_free (bitmap);
                } else {
-                       vt->data = mono_mempool_alloc0 (domain->mp, class_size);
+                       vt->data = mono_mempool_alloc0 (domain->mp, 
class->class_size);
                }
-               mono_stats.class_static_data_size += class_size;
+               mono_stats.class_static_data_size += class->class_size;
        }
 
        cindex = -1;

Modified: trunk/mono/mono/metadata/reflection.c
===================================================================
--- trunk/mono/mono/metadata/reflection.c       2006-09-22 12:25:25 UTC (rev 
65813)
+++ trunk/mono/mono/metadata/reflection.c       2006-09-22 13:46:09 UTC (rev 
65814)
@@ -9508,7 +9508,7 @@
                if (!klass->parent->size_inited)
                        mono_class_init (klass->parent);
                klass->instance_size = klass->parent->instance_size;
-               klass->sizes.class_size = 0;
+               klass->class_size = 0;
                klass->min_align = klass->parent->min_align;
                /* if the type has no fields we won't call the field_setup
                 * routine which sets up klass->has_references.

_______________________________________________
Mono-patches maillist  -  [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches

Reply via email to