[Mono-devel-list] Re: [Mono-patches] r40228 - trunk/mcs/class/System.Drawing/System.Drawing

Ben Maurer bmaurer at ximian.com
Mon Feb 7 07:12:14 EST 2005


On Mon, 2005-02-07 at 08:11 +0000, Marek Safar wrote:
> >
> >I think this would be great as a compiler optimization.  (In fact, GCC
> >has something similar for move '=0' static initializers to the BSS.)
> >  
> >
> 
> I am working on this but for instance fields only. For static fields it 
> is more complicated but possible to implement for some special cases. 
> Because you can remove hidden dependency
> of static constructors.

There was an msft blog that basically said they figured out some corner
cases where you could safely remove. I think one of the cases was `every
field is inited' to null/0/false/etc'. So that would have covered this
case.

But this was the only really horrible case I was able to find, using
grep. I didn't measure the amount of jitted code, but it was probably
very large. It was probably:

mov eax, 0xdeadbeef
mov [eax], 0

Which is likely on the order of 12 bytes (don't quote me, I haven't
looked it up). Take that times the number of fields there. *ugh*.

-- Ben




More information about the Mono-devel-list mailing list