Changeset 43363 in webkit for trunk/JavaScriptCore/jit/JIT.h


Ignore:
Timestamp:
May 7, 2009, 1:42:59 PM (16 years ago)
Author:
[email protected]
Message:

2009-05-07 Maciej Stachowiak <[email protected]>

Reviewed by Sam Weinig.


  • optimize various cases of branch-fused less


1% speedup on SunSpider overall
13% speedup on math-cordic

  • jit/JIT.cpp: (JSC::JIT::privateCompileMainPass): op_loop_if_less: Optimize case of constant as first operand, just as case of constant as second operand. op_jnless: Factored out into compileFastArith_op_jnless. (JSC::JIT::privateCompileSlowCases): op_jnless: Factored out into compileFastArithSlow_op_jnless.
  • jit/JIT.h:
  • jit/JITArithmetic.cpp: (JSC::JIT::compileFastArith_op_jnless): Factored out from main compile loop.
  • Generate inline code for comparison of constant immediate int as first operand to another immediate int, as for loop_if_less

(JSC::JIT::compileFastArithSlow_op_jnless):

  • Generate inline code for comparing two floating point numbers.
  • Generate code for both cases of comparing a floating point number to a constant immediate int.
  • bytecode/CodeBlock.cpp: (JSC::CodeBlock::dump): Fix dumping of op_jnless (tangentially related bugfix).
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/JavaScriptCore/jit/JIT.h

    r43362 r43363  
    380380        void compileFastArith_op_lshift(unsigned result, unsigned op1, unsigned op2);
    381381        void compileFastArith_op_rshift(unsigned result, unsigned op1, unsigned op2);
     382        void compileFastArith_op_jnless(unsigned op1, unsigned op2, unsigned target);
    382383        void compileFastArith_op_pre_inc(unsigned srcDst);
    383384        void compileFastArith_op_pre_dec(unsigned srcDst);
     
    391392        void compileFastArithSlow_op_lshift(unsigned result, unsigned op1, unsigned op2, Vector<SlowCaseEntry>::iterator&);
    392393        void compileFastArithSlow_op_rshift(unsigned result, unsigned op1, unsigned op2, Vector<SlowCaseEntry>::iterator&);
     394        void compileFastArithSlow_op_jnless(unsigned op1, unsigned op2, unsigned target, Vector<SlowCaseEntry>::iterator&);
    393395        void compileFastArithSlow_op_pre_inc(unsigned srcDst, Vector<SlowCaseEntry>::iterator&);
    394396        void compileFastArithSlow_op_pre_dec(unsigned srcDst, Vector<SlowCaseEntry>::iterator&);
Note: See TracChangeset for help on using the changeset viewer.