LLInt is on if the target platform is a supported architecture (currently only 
x86, x86-64, and ARM w/Thumb2 I believe) on a platform with an ABI we 
understand (which I believe is normal unix-derivative cdecl)

--Oliver

On Apr 18, 2012, at 4:35 AM, wingoog moon wrote:

> 
> Thanks for anwers.
> Can you please tell more about  LLInt and is it turned on by default?
> On Wed, Apr 18, 2012 at 12:48 PM, Filip Pizlo <[email protected]> wrote:
> JavaScript is a dynamically typed language. Therefore, we cannot know for 
> sure what types of values may flow into an instruction at the time we compile 
> it. a + b may be an integer addition that produces an integer result, an 
> integer addition that overflows and produces a double, an addition of a 
> double to an integer, an addition of an integer to a double, a double 
> addition, a string concatenation, or an "object-to-value" conversion followed 
> by any of the previous.
> 
> But the common case is typically going to be an integer addition or a double 
> addition.
> 
> Therefore, the baseline JIT (which you seem to be looking at) has a fast path 
> for the common cases and a slow path for the uncommon ones.  The slow path 
> almost always results in a C function call, which then does all of the magic 
> necessary to satisfy JS semantics.
> 
> Similar things happen for almost all other JS instructions: there is a simple 
> path for the cases we have found to be common and a slow-path C function call 
> for the rare cases.
> 
> The slow paths are emitted as a separate piece of out-of-line code because 
> that optimizes instruction cache locality for the main path, and helps a bit 
> with branch prediction.
> 
> However, if you want to see how JSC actually makes JavaScript run fast, you 
> should probably also look at either the LLInt (which enables very fast 
> start-up by using a well-tuned threaded OSR-capable interpreter) or the DFG 
> (which enables high throughput for longer-running code by leveraging value 
> profiling to avoid having to deal with JS's dynamism in most cases). The 
> baseline JIT is still probably important for performance, but this is 
> becoming less and less true as the LLInt is likely to get faster and the DFG 
> is likely to expand coverage to more kinds of code (DFG still cannot compile 
> some functions at all due to missing opcode support).
> 
> -F
> 
> 
> 
> On Apr 18, 2012, at 1:39 AM, wingoog moon wrote:
> 
>> Hi!
>> As I understand there are two passes to translate SFX bytecode to the native 
>> code(functions privateCompileMainPass() and   privateCompileSlowCases()).
>> So whats the purpose of privateCompileSlowCases(). Why we need slow cases 
>> for each bytecodeInstruction? Is it needed when arguments of instruction not 
>> integer or something else?
>> 
>> Thanks for attention! 
>> _______________________________________________
>> webkit-dev mailing list
>> [email protected]
>> http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev
> 
> 
> _______________________________________________
> webkit-dev mailing list
> [email protected]
> http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev

_______________________________________________
webkit-dev mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev

Reply via email to