LLInt replaced the old C++ interpreter in February of 2012. This new approach provides better interaction between the interpreter and the native code in a mixed environment. However, LLInt requires CPU-specific backends for each architecture (such as ARM). If a backend is not available, it falls back to a C++ based implementation called CLoop. This mode is only recommended as a last resort, since it is not compatible with the further execution modes.
When a given function is executed a large number of times, the function is recompiled by the DFG-JIT (Data Flow Graph JIT) compiler. This compiler performs aggressive optimizations based on the profiling data collected during the previous executions of the function.
Regarding the two ARM instruction sets, neither of them is absolutely faster than the other, although Thumb-2 has a slight advantage in general. Therefore both alternatives are reasonable choices for any devices.
We used the Qt port of WebKit (r146983) to perform these measurements on an Odroid-X2 (ARM CortexTM-A9 Quad Core 1.7Ghz 2GB memory) board with Ubuntu Linaro 12.11 system.
Guest Blogger:Gabor Rapcsanyi, Developer - University of Szeged, is a Developer at the Software Engineering Department in the University of Szeged, Hungary. He is a contributor of WebKit open source browser engine (commiter status). He holds an MSc in Computer Science.