"With NGen, there can't be anything "lazy" about how generics are instantiated. Instead, NGen must create representations of every generics instance it could encounter. The CLR won't be around to JIT anything. So, after all the discussion of avoiding code bloat and taking advantage of CLR's run-time optimizations, NGen takes all those values and turns them on their collective heads."
Bartok compiler for Singularity uses another approach of code generation.
http://en.wikipedia.org/wiki/Bartok_%28compiler%29
http://singularity.codeplex.com/SourceControl/changeset/view...
Windows Phone 8 only runs native code. .NET IL gets compiled down to native code when uploaded to the Windows App Store, by making use of an optimizing IL to native compiler.
http://channel9.msdn.com/Shows/Going+Deep/Mani-Ramaswamy-and...
http://channel9.msdn.com/Events/Build/2012/3-005
Mono also compiles to native code on iOS and other systems as well
http://docs.xamarin.com/guides/ios/advanced_topics/compilati...
The IL2CPU compiler used in the Cosmos project, which is still not fully implemented
http://www.codeproject.com/Articles/220071/Csharp-Open-Sourc... http://cosmos.codeplex.com/SourceControl/changeset/view/1011... http://cosmos.codeplex.com/SourceControl/changeset/view/1011...
Going back to the runtime code generation (JIT), there is also SPUR being used at Microsoft Research
http://research.microsoft.com/en-us/projects/spur/
Don't mix languages with their implementations.