Added support for enum types.
authorMartin Baulig <martin@novell.com>
Mon, 23 Sep 2002 16:42:25 +0000 (16:42 -0000)
committerMartin Baulig <martin@novell.com>
Mon, 23 Sep 2002 16:42:25 +0000 (16:42 -0000)
svn path=/trunk/mono/; revision=7739

mono/metadata/debug-mono-symfile.c

index cedf3a6d3263fdbe5c18e83e27344acdbd6a4bf7..69d99f7ba8009a1a4eccf521f29828f574264b35 100644 (file)
@@ -859,15 +859,6 @@ write_type (MonoSymbolFile *symfile, MonoType *type)
                return retval;
 
        switch (type->type) {
-       case MONO_TYPE_VALUETYPE:
-       case MONO_TYPE_CLASS: {
-               MonoClass *klass = type->data.klass;
-
-               mono_class_init (klass);
-               *((guint32 *) ptr)++ = type->data.klass->instance_size;
-               break;
-       }
-
        case MONO_TYPE_BOOLEAN:
        case MONO_TYPE_I1:
        case MONO_TYPE_U1:
@@ -921,7 +912,7 @@ write_type (MonoSymbolFile *symfile, MonoType *type)
                MonoArray array;
                MonoArrayBounds bounds;
 
-               *((guint32 *) ptr)++ = -13 - sizeof (gpointer);
+               *((guint32 *) ptr)++ = -12 - sizeof (gpointer);
                *ptr++ = 3;
                *ptr++ = sizeof (MonoArray);
                *ptr++ = (guint8*)&array.max_length - (guint8*)&array;
@@ -938,6 +929,23 @@ write_type (MonoSymbolFile *symfile, MonoType *type)
                break;
        }
 
+       case MONO_TYPE_VALUETYPE:
+       case MONO_TYPE_CLASS: {
+               MonoClass *klass = type->data.klass;
+
+               mono_class_init (klass);
+               if (klass->enumtype) {
+                       *((guint32 *) ptr)++ = -1 - sizeof (gpointer);
+                       *ptr++ = 4;
+                       *((gpointer *) ptr)++ = write_type (symfile, klass->enum_basetype);
+                       break;
+               }
+
+               *((guint32 *) ptr)++ = -1;
+               *ptr++ = 5;
+               break;
+       }
+
        default:
                g_message (G_STRLOC ": %p - %x,%x,%x", type, type->attrs, type->type, type->byref);