vtable bug fix
authorDietmar Maurer <dietmar@mono-cvs.ximian.com>
Wed, 30 Jan 2002 12:22:46 +0000 (12:22 -0000)
committerDietmar Maurer <dietmar@mono-cvs.ximian.com>
Wed, 30 Jan 2002 12:22:46 +0000 (12:22 -0000)
svn path=/trunk/mono/; revision=2199

mono/metadata/class.c

index 6bc279a3e4edbb742b3eb5c29ea4e8552a5d95dd..db57b0dd4e6f16e1956b7b6d95d925d343973d85 100644 (file)
@@ -437,9 +437,11 @@ mono_class_init (MonoClass *class)
                                MonoMethod *im = tmp_vtable [io + l];
 
                                if (im) {
-                                       im->slot = io + l;
+                                       if (im->slot < 0)
+                                               im->slot = io + l;
                                        if (!(im->flags & METHOD_ATTRIBUTE_ABSTRACT)) {
-                                       //printf ("  ASLOT%d %s.%s:%s\n", io + l, ic->name_space, ic->name, im->name);
+                                               //printf ("  ASLOT%d %s.%s:%s %s.%s:%s\n", io + l, ic->name_space, ic->name, 
+                                               // im->name, im->klass->name_space,  im->klass->name, im->name);
                                                vtable [io + l] = arch_create_jit_trampoline (im);
                                        }
                                }
@@ -498,17 +500,19 @@ mono_class_init (MonoClass *class)
        mono_runtime_class_init (class);
 
        /*
+       printf ("VTABLE %s.%s\n", class->name_space, class->name); 
+
        for (i = 0; i < class->vtable_size; ++i) {
                MonoMethod *cm;
               
                cm = vtable [i];
-               if (cm) 
+               if (cm) {
                        printf ("  METH%d %p %s %d\n", i, cm, cm->name, cm->slot);
-
+               }
        }
+       
+       printf ("METAEND %s.%s\n", class->name_space, class->name); 
        */
-
-       /* printf ("METAEND %s.%s\n", class->name_space, class->name); */
 }
 
 /*