JS engine improvements in IE10
Saturday, June 16, 2012 6:43:02 AM
Unlike in other browsers, Chakra’s just-in-time (JIT) compiler runs on a separate dedicated thread and thus does not interfere with script execution.
To further reduce the time to first executed instruction, Chakra processes and emits bytecode only for functions that are about to be executed using a mechanism called deferred parsing.
so big 3rd party libraries will not get executed until called.
We enhanced Chakra’s interpreter to collect it at runtime, a technique we call dynamic profiling. When a function is scheduled for JIT compilation, the compiler examines the runtime profile gathered by the interpreter and emits code tailored to the expected inputs.
The interpreter gathers information for the runs it observes, but it’s possible that the execution of the program will lead to runtime values which violate assumptions made in the generated optimized code. For every assumption it makes, the compiler emits a runtime check. If a later execution results in an unexpected value, the check fails, execution bails out of the specialized machine code, and is continued in the interpreter. The reason for bailout (the failed check) is recorded, additional profile information is collected by the interpreter, and the function is recompiled with different assumptions. Bailout and re-compilation are two fundamentally new capabilities in IE10.
Just like other modern JIT compilers. Thus, writing type-stable code is essential for apps that need speed. (c) Cap.
Also, there are improvements to GC. Again, like in all other engines in 2011-2012.
Related older post about other jit-compilers: "http://my.opera.com/c69/blog/show.dml/37206612