
At Wed, 13 Oct 2010 01:02:17 -0400, Bryce Lelbach wrote:
There's nothing magic about JITing C++, even JITing non-trivial C++. It's basically pointless, because the LLVM bitcode/LLVM assembly generated by a C++ program is absolutely, positively not portable. Starting in the earliest stages of compilation (preprocessing), platform dependencies enter the code (not to mention all the preprocessor workarounds). Add in alignment jazz. Plus sizes. Plus implementation details (GNU expands sizeof and assert in the preprocessor, for example).
But all those things are not intrinsic to C++. The C++ abstract machine doesn't specify any of those platform dependencies. It's just that you need to do some of those optimizations in the front-end for full compilation to object code, and nobody is interested in C++ code that's link-incompatible with all the libraries, etc., that have already been compiled. -- Dave Abrahams BoostPro Computing http://www.boostpro.com