Author: zoltan
Date: 2006-10-06 07:03:56 -0400 (Fri, 06 Oct 2006)
New Revision: 66343

Modified:
   trunk/mono/mono/metadata/ChangeLog
   trunk/mono/mono/metadata/blob.h
   trunk/mono/mono/metadata/class.c
   trunk/mono/mono/metadata/metadata.c
   trunk/mono/mono/metadata/row-indexes.h
Log:
2006-10-06  Zoltan Varga  <[EMAIL PROTECTED]>

        * class.c metadata.c row-indexes.h blob.h: Applied patch from Jb. Add 
support for the
        PropertyPtr table.


Modified: trunk/mono/mono/metadata/ChangeLog
===================================================================
--- trunk/mono/mono/metadata/ChangeLog  2006-10-06 10:36:47 UTC (rev 66342)
+++ trunk/mono/mono/metadata/ChangeLog  2006-10-06 11:03:56 UTC (rev 66343)
@@ -1,3 +1,8 @@
+2006-10-06  Zoltan Varga  <[EMAIL PROTECTED]>
+
+       * class.c metadata.c row-indexes.h blob.h: Applied patch from Jb. Add 
support for the
+       PropertyPtr table.
+
 2006-10-05  Zoltan Varga  <[EMAIL PROTECTED]>
 
        * loader.c (mono_method_signature): Fix a use of MONO_TABLE_METHOD 
missed earlier.

Modified: trunk/mono/mono/metadata/blob.h
===================================================================
--- trunk/mono/mono/metadata/blob.h     2006-10-06 10:36:47 UTC (rev 66342)
+++ trunk/mono/mono/metadata/blob.h     2006-10-06 11:03:56 UTC (rev 66343)
@@ -70,7 +70,7 @@
        MONO_TABLE_EVENT_POINTER,
        MONO_TABLE_EVENT,
        MONO_TABLE_PROPERTYMAP,
-       MONO_TABLE_UNUSED5,
+       MONO_TABLE_PROPERTY_POINTER,
        MONO_TABLE_PROPERTY,
        MONO_TABLE_METHODSEMANTICS,
        MONO_TABLE_METHODIMPL,

Modified: trunk/mono/mono/metadata/class.c
===================================================================
--- trunk/mono/mono/metadata/class.c    2006-10-06 10:36:47 UTC (rev 66342)
+++ trunk/mono/mono/metadata/class.c    2006-10-06 11:03:56 UTC (rev 66343)
@@ -1289,7 +1289,6 @@
 {
        guint startm, endm, i, j;
        guint32 cols [MONO_PROPERTY_SIZE];
-       MonoTableInfo *pt = &class->image->tables [MONO_TABLE_PROPERTY];
        MonoTableInfo *msemt = &class->image->tables 
[MONO_TABLE_METHODSEMANTICS];
        MonoProperty *properties;
        guint32 last;
@@ -1312,7 +1311,7 @@
 
        properties = mono_mempool_alloc0 (class->image->mempool, sizeof 
(MonoProperty) * class->property.count);
        for (i = class->property.first; i < last; ++i) {
-               mono_metadata_decode_row (pt, i, cols, MONO_PROPERTY_SIZE);
+               mono_metadata_decode_table_row (class->image, 
MONO_TABLE_PROPERTY, i, cols, MONO_PROPERTY_SIZE);
                properties [i - class->property.first].parent = class;
                properties [i - class->property.first].attrs = cols 
[MONO_PROPERTY_FLAGS];
                properties [i - class->property.first].name = 
mono_metadata_string_heap (class->image, cols [MONO_PROPERTY_NAME]);

Modified: trunk/mono/mono/metadata/metadata.c
===================================================================
--- trunk/mono/mono/metadata/metadata.c 2006-10-06 10:36:47 UTC (rev 66342)
+++ trunk/mono/mono/metadata/metadata.c 2006-10-06 11:03:56 UTC (rev 66343)
@@ -301,7 +301,11 @@
        MONO_MT_BLOB_IDX,   /* "Type" }, */
        MONO_MT_END,
 
-#define PROPERTY_MAP_SCHEMA_OFFSET PROPERTY_SCHEMA_OFFSET + 4
+#define PROPERTY_POINTER_SCHEMA_OFFSET PROPERTY_SCHEMA_OFFSET + 4
+       MONO_MT_TABLE_IDX, /* "Property" }, */
+       MONO_MT_END,
+
+#define PROPERTY_MAP_SCHEMA_OFFSET PROPERTY_POINTER_SCHEMA_OFFSET + 2
        MONO_MT_TABLE_IDX,  /* "Parent:TypeDef" }, */
        MONO_MT_TABLE_IDX,  /* "PropertyList:Property" }, */
        MONO_MT_END,
@@ -375,7 +379,7 @@
        EVENT_POINTER_SCHEMA_OFFSET,
        EVENT_SCHEMA_OFFSET,
        PROPERTY_MAP_SCHEMA_OFFSET,
-       NULL_SCHEMA_OFFSET,
+       PROPERTY_POINTER_SCHEMA_OFFSET,
        PROPERTY_SCHEMA_OFFSET,
        METHOD_SEMA_SCHEMA_OFFSET,
        METHOD_IMPL_SCHEMA_OFFSET,
@@ -573,6 +577,9 @@
                                field_size = i ? idx_size (MONO_TABLE_PROPERTY):
                                        idx_size(MONO_TABLE_TYPEDEF); 
                                break;
+                       case MONO_TABLE_PROPERTY_POINTER:
+                               g_assert (i == 0);
+                               field_size = idx_size (MONO_TABLE_PROPERTY); 
break;
                        case MONO_TABLE_TYPEDEF:
                                g_assert (i == 4 || i == 5);
                                field_size = i == 4 ? idx_size 
(MONO_TABLE_FIELD):
@@ -1126,6 +1133,11 @@
                        return mono_metadata_decode_row_col (&image->tables 
[MONO_TABLE_EVENT_POINTER], idx - 1, MONO_EVENT_POINTER_EVENT);
                else
                        return idx;
+       case MONO_TABLE_PROPERTY:
+               if (image->tables [MONO_TABLE_PROPERTY_POINTER].rows)
+                       return mono_metadata_decode_row_col (&image->tables 
[MONO_TABLE_PROPERTY_POINTER], idx - 1, MONO_PROPERTY_POINTER_PROPERTY);
+               else
+                       return idx;
        case MONO_TABLE_PARAM:
                if (image->tables [MONO_TABLE_PARAM_POINTER].rows)
                        return mono_metadata_decode_row_col (&image->tables 
[MONO_TABLE_PARAM_POINTER], idx - 1, MONO_PARAM_POINTER_PARAM);

Modified: trunk/mono/mono/metadata/row-indexes.h
===================================================================
--- trunk/mono/mono/metadata/row-indexes.h      2006-10-06 10:36:47 UTC (rev 
66342)
+++ trunk/mono/mono/metadata/row-indexes.h      2006-10-06 11:03:56 UTC (rev 
66343)
@@ -250,6 +250,11 @@
 };
 
 enum {
+       MONO_PROPERTY_POINTER_PROPERTY,
+       MONO_PROPERTY_POINTER_SIZE
+};
+
+enum {
        MONO_PROPERTY_MAP_PARENT,
        MONO_PROPERTY_MAP_PROPERTY_LIST,
        MONO_PROPERTY_MAP_SIZE

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

Reply via email to