Mono Optimizations Enabled

by Miguel de Icaza

Alp just noticed this commit to Mono:

2006-04-19  Massimiliano Mantione  

        * mini.c: Disabled inline where it can alter the call stack in a
        way visible from managed code.

        * driver.c: enabled inline,consprop,copyprop,treeprop,deadce by
        default.

And was wondering why we did not make more noise about it.

The story is that the actual new optimizations shipped in 1.1.14, but inlining had some negative side effects that broke some applications (for instance, if we inlined a method that used System.Reflection.Assembly.GetCallingAssembly() you would get the wrong assembly.

The other problem that we found was related to the order in which classes were initialized when no static constructor was defined (for the full gory details, you can read this).

The first issue has been fixed (the inliner was too happy inlining). We have solved the known instances of static constructor initialization, but inlining might expose some of these problems, hopefully they should be resolved by the time we ship 1.1.16.

Posted on 19 Apr 2006