imported delegate patches from Daniel, new GetHashCode icalls
[mono.git] / web / c-sharp
index 8faf5f83b1335925c0e1518baeabcaeae73a19f8..07c13831039f565c7387d00adf07002696f7e03b 100644 (file)
@@ -9,7 +9,7 @@
 
        MCS was able to parse itself on April 2001, MCS compiled itself
        for the first time on December 28 2001.  MCS became self hosting
-       on January 3rd, 2001
+       on January 3rd, 2002
 
        A test suite is maintained to track the progress of
        the compiler and various programs are routinely compiled and
 
                * Code generation: The code generation is done through
                  the System.Reflection.Emit API.
-
        </ul>
 
+** CIL Optimizations.
+
+       The compiler performs a number of simple optimizations on its input:
+       constant folding (this is required by the C# language spec) and 
+       can perform dead code elimination.
+
+       Other more interesting optimizations like hoisting are not possible
+       at this point since the compiler output at this point does not
+       generate an intermediate representation that is suitable to
+       perform basic block computation.  
+
+       Adding an intermediate layer to enable the basic block
+       computation to the compiler should be a simple task, but we
+       are considering having a generic CIL optimizer.  Since all the
+       information that is required to perform basic block-based
+       optimizations is available at the CIL level, we might just skip
+       this step altogether and have just a generic IL optimizer that
+       would perform hoisting on arbitrary CIL programs, not only
+       those produced by MCS.  
+
+       If this tool is further expanded to perform constant folding
+       (not needed for our C# compiler, as it is already in there)
+       and dead code elimination, other compiler authors might be
+       able to use this generic CIL optimizer in their projects
+       reducing their time to develop a production compiler. 
+
 <a name="tasks">
 ** Current pending tasks