[Mono-devel-list] [PATCH] VTable layout

Lluis Sanchez lluis at ximian.com
Mon Mar 22 15:21:27 EST 2004


On dg, 2004-03-21 at 17:27, Paolo Molaro wrote:
> On 03/20/04 Ben Maurer wrote:
> > A changelog:
> > 
> >       * class.c -- do not insert non-virtual methods in the vtable 
> >       * icall.c, mono-debug-debugger.c, object.c: if method->slot == -1,
> >         that means the method is non-virtual. This never would have
> >         happened before.
> > 
> > No regressions occur on the mini regression tests, the mono tests, nor
> > the corlib tests.
> 
> If lluis can confirm there are no regressions, please commit.

The patch seems to be ok. I found no regressions.

Lluis.

> 
> > Index: icall.c
> > ===================================================================
> > RCS file: /cvs/public/mono/mono/metadata/icall.c,v
> > retrieving revision 1.434
> > diff -u -r1.434 icall.c
> > --- icall.c	17 Mar 2004 23:59:47 -0000	1.434
> > +++ icall.c	20 Mar 2004 20:42:14 -0000
> > @@ -2549,9 +2549,12 @@
> >  		}
> >  		
> >  		match = 0;
> > -		if (g_hash_table_lookup (method_slots, GUINT_TO_POINTER (method->slot)))
> > -			continue;
> > -		g_hash_table_insert (method_slots, GUINT_TO_POINTER (method->slot), method);
> > +		if (method->slot != -1) {
> > +			if (g_hash_table_lookup (method_slots, GUINT_TO_POINTER (method->slot)))
> > +				continue;
> > +			g_hash_table_insert (method_slots, GUINT_TO_POINTER (method->slot), method);
> > +		}
> > +		
> 
> After this patch is committed and tested, you could try to use a
> MonoBitset instead of the hashtable: it may give a measurable speedup.
> Also, looking at the code, it's not clear to me what would happen for
> properties which override just the get or the set method: maybe in that
> case we need to consider both the setter and the getter slots in the
> hashtable. Could you write a test case for that and try to break the
> current code?
> Thanks.
> 
> lupus




More information about the Mono-devel-list mailing list