Originally created by: Tobias.N... (code.google.com)@gmail.com
Originally owned by: Tobias.N... (code.google.com)@gmail.com
Would be nice to speed up browsing by having JIT accelerated JavaScript.
The Nitro MacroAssembler developed by the TenFourFox team for mozilla's methodJIT already provides nearly everything needed to get it working. The MacroAssembler implementations in mozilla and WebKit didn't diverge much, so the backporting itself was quite easy.
In order to get the most simple JIT backend working, which was the YarrJIT regular expression runtime, some additional functions needed to be implemented or at least a stub implementation was needed in order to get it linked. Mainly one endianness issue in YarrJIT which didn't seem to affect TenFourFox so far was what prevented Leopard WebKit from enabling this - but now it does already work, and it is fast!
The next logical step will be plain SquirrelFish Extreme, or the baseline JIT compiler. There doesn't seem to be missing much any more, mainly the trampoline(s) and branch repatching functions (but getting those right can be quite tricky!). Once it compiles and links the sources will be available in the patches - getting it working correctly might still be a long way to go.
As a quick path for falling back to interpreted execution while the JIT compiler is still compiling the LowLevelInterpreter can be used. When there's no JIT at all at least a pure C backend can be used (which needed some endianness fixes to get it working on PowerPC) - which unfortunately cannot be used as a fallback, but rather needs to be implemented in a similar way as the Nitro MacroAssembler (much simpler in fact, but the produced code needs to be compatible).
After that there is the DFG JIT and also the upcoming FTL JIT.
JavaScript speed is becoming more and more important - more and more sites scroll slowly because scroll events do fire JavaScript callbacks.
Will Mark (Bigfoot) Olsen's JavaScriptCore PowerPC JIT for MorphOS every arrive?