X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=web%2Fc-sharp;h=07c13831039f565c7387d00adf07002696f7e03b;hb=7fd884ca1d8acbd386db8147e33802c7f3957393;hp=8faf5f83b1335925c0e1518baeabcaeae73a19f8;hpb=ab7465ea46961ce33b982d9bea33a7a462a78072;p=mono.git diff --git a/web/c-sharp b/web/c-sharp index 8faf5f83b13..07c13831039 100644 --- a/web/c-sharp +++ b/web/c-sharp @@ -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 @@ -73,9 +73,34 @@ * Code generation: The code generation is done through the System.Reflection.Emit API. - +** 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. + ** Current pending tasks