> [About non-JIT performance] It would be the more amusing if this resulted in better performance all around.
Don't take it as an offense, but that's nonsense, and let a student of Virtual Machine implementation explain why.
The reason to use JIT compilation is that Java programs can't run fast without profile-guided optimizations - a JIT can inline virtual function calls easily (after checking the exact class of the target object with a guard, but that's a perfectly predictable branch). That's something C++ can't do.
Also, last time I tried Eclipse compiled with GCJ, it was IIRC 5 times slower in startup than the standard guy - enough to make me uninstall it. That doesn't mean anything per se, but I still wanted to point that out.
About LLVM, it has a great potential. But LLVM's JIT compiler was not _that_ good when Google's engineers working on Unladen Swallow tried using it.
So, yeah, in the long run basing a JVM on LLVM might be just the right move, for the sake of reuse, but you need to merge all HotSpot optimizations in LLVM, and then you would enjoy also a big-iron parallel GC even using Unladen Swallow, if those people ever manage removing the Global Interpreter Lock, their version of the Big Kernel Lock.