2009-08-18 Rodrigo Kumpera <rkumpera@novell.com>
authorRodrigo Kumpera <kumpera@gmail.com>
Tue, 18 Aug 2009 23:14:00 +0000 (23:14 -0000)
committerRodrigo Kumpera <kumpera@gmail.com>
Tue, 18 Aug 2009 23:14:00 +0000 (23:14 -0000)
* cil-coff.h: Fix METHOD_HEADER_FORMAT_MASK to be 2 bits and
remove METHOD_HEADER_TINY_FORMAT1.

* reflection.c: Remove reference to METHOD_HEADER_TINY_FORMAT1.

* metadata.c (mono_metadata_parse_mh_full): Kill tiny format1.

Both spec and MS uses only 2 bits to enumerate the kind of header.
So given that 0x6 and 0x2 are equal under a 2 bits mask, tiny format1
is superfluous, only used for tiny headers with odd code lengths.

This change also make sure that mono doesn't wronly interpret bit 2
of fat header flags, which is currently reserved.

svn path=/trunk/mono/; revision=140208

mono/metadata/ChangeLog
mono/metadata/cil-coff.h
mono/metadata/metadata.c
mono/metadata/reflection.c

index 5670fbf5b6b44b67e0574df6f41e4a06c5fda217..5b475b877f88988ab4d7750c10e4ee03c3039811 100644 (file)
@@ -1,3 +1,19 @@
+2009-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
+
+       * cil-coff.h: Fix METHOD_HEADER_FORMAT_MASK to be 2 bits and
+       remove METHOD_HEADER_TINY_FORMAT1.
+
+       * reflection.c: Remove reference to METHOD_HEADER_TINY_FORMAT1.
+
+       * metadata.c (mono_metadata_parse_mh_full): Kill tiny format1.
+
+       Both spec and MS uses only 2 bits to enumerate the kind of header.
+       So given that 0x6 and 0x2 are equal under a 2 bits mask, tiny format1
+       is superfluous, only used for tiny headers with odd code lengths.
+
+       This change also make sure that mono doesn't wronly interpret bit 2
+       of fat header flags, which is currently reserved.
+
 2009-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
 
        * metadata.c (do_mono_metadata_parse_type): Do error
index 1a3ff48f06f66c94440586b4374cb762b8c71674..290b85dc718436d1db63ae6462928fc067773667 100644 (file)
@@ -7,9 +7,8 @@
 /*
  * 25.2.1: Method header type values
  */
-#define METHOD_HEADER_FORMAT_MASK   7
+#define METHOD_HEADER_FORMAT_MASK   3
 #define METHOD_HEADER_TINY_FORMAT   2
-#define METHOD_HEADER_TINY_FORMAT1  6
 #define METHOD_HEADER_FAT_FORMAT    3
 
 /*
index 7224fb93b0efebce11ac333d89d963c8f62e2c4e..b67236ff3c6f95c0201f19da2f6922f8721093d8 100644 (file)
@@ -2949,19 +2949,6 @@ mono_metadata_parse_mh_full (MonoImage *m, MonoGenericContainer *container, cons
                mh->code_size = flags >> 2;
                mh->code = (unsigned char*)ptr;
                return mh;
-       case METHOD_HEADER_TINY_FORMAT1:
-               mh = mono_image_alloc0 (m, MONO_SIZEOF_METHOD_HEADER);
-               ptr++;
-               mh->max_stack = 8;
-               local_var_sig_tok = 0;
-
-               /*
-                * The spec claims 3 bits, but the Beta2 is
-                * incorrect
-                */
-               mh->code_size = flags >> 2;
-               mh->code = (unsigned char*)ptr;
-               return mh;
        case METHOD_HEADER_FAT_FORMAT:
                fat_flags = read16 (ptr);
                ptr += 2;
index 8acb1b6aa71b608cef85497a678d66a1609b5062..e472ed31d38c922267bcc6d1d4f094a04080fd2d 100644 (file)
@@ -6694,7 +6694,6 @@ mono_method_body_get_object (MonoDomain *domain, MonoMethod *method)
        format = flags & METHOD_HEADER_FORMAT_MASK;
        switch (format){
        case METHOD_HEADER_TINY_FORMAT:
-       case METHOD_HEADER_TINY_FORMAT1:
                local_var_sig_token = 0;
                break;
        case METHOD_HEADER_FAT_FORMAT: