Am I reading this right? This seems to be an alternate V8 with a slower JIT startup but faster JITted results for situations like running a Node server for weeks at a time as opposed to popping around between web sites in Chrome.
Any execution or compilation time benchmarks? I'd expect LLV8 to be much slower than TurboFan for native codegen, but if the runtime benefits are greater, this might be a good fit for server side JS applications
Or for long-running JavaScript components. V8 doesn't optimize code with TurboFan right away; it does it for hotspot functions that look optimizable.
This would especially make sense along with an "optimized cocde cache": cache pre-compiled optimized versions of JavaScript, such as common JavaScript libraries, based on hash.
We've got a couple of positive (execution time wise) results here: https://github.com/ispras/llv8/wiki/Current%20state. Relative to Crankshaft rather than TurboFan, though. Compilation indeed takes much longer at the moment (compared both with TF and CS).
It would be interesting to see JavaScript bindings to the LLVM back-end so people could write new compiler front-ends in JavaScript. I see now that JavaScript bindings do exist but are not maintained:
> I see now that JavaScript bindings do exist but are not maintained
That's partially because the amount of API churn for LLVM and for native Node.js bindings is high. It's actually a lot of work to keep up with LLVM in particular.
Since JavaScript is largely considered a terrible language by anyone who's spent enough time with various languages, I'm mostly looking forward to the impact this might have on other arguably better languages that "compile to JS" such as Elm.
The code shown in this project's readme wouldn't work statically - can you see all the deoptimisation points in the generated code? It can only be made so fast because it has the option to bail out to the interpreter at any point.