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