diff options
author | Miguel de Icaza <miguel@gnome.org> | 2002-01-28 17:04:10 +0300 |
---|---|---|
committer | Miguel de Icaza <miguel@gnome.org> | 2002-01-28 17:04:10 +0300 |
commit | cc44d36495100ca055ab71f85da73fdf19d0d976 (patch) | |
tree | 9288ad321681f51766e9129775bd15828a3960bd /doc/c-sharp | |
parent | 51c3b0cb84ed625b6f25fa6d159c6eea2724c283 (diff) |
Update c-sharp file with thoughts on the CIL optimizer; Fix the MIT license
link.
svn path=/trunk/mono/; revision=2184
Diffstat (limited to 'doc/c-sharp')
-rw-r--r-- | doc/c-sharp | 27 |
1 files changed, 26 insertions, 1 deletions
diff --git a/doc/c-sharp b/doc/c-sharp index 8faf5f83b13..553f79cdcca 100644 --- a/doc/c-sharp +++ b/doc/c-sharp @@ -73,9 +73,34 @@ * 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 |