Ignore:
Timestamp:
May 9, 2010, 4:42:22 AM (15 years ago)
Author:
[email protected]
Message:

2010-05-09 Oliver Hunt <[email protected]>

Reviewed by Maciej Stachowiak.

Improve string indexing performance
https://bugs.webkit.org/show_bug.cgi?id=38814

Add an assembly stub to do indexed loads from strings much
more cheaply than the current stub dispatch logic. We can
do this because we are able to make guarantees about the
register contents when entering the stub so the call overhead
is negligible.

  • jit/JIT.h:
  • jit/JITInlineMethods.h:
  • jit/JITOpcodes.cpp:
  • jit/JITPropertyAccess.cpp: (JSC::JIT::stringGetByValStubGenerator): (JSC::JIT::emitSlow_op_get_by_val):

Moved from JITOpcodes.cpp to keep the slowcase next to
the normal case codegen as we do for everything else.

  • jit/JITPropertyAccess32_64.cpp: (JSC::JIT::stringGetByValStubGenerator): (JSC::JIT::emitSlow_op_get_by_val):
  • jit/JSInterfaceJIT.h: (JSC::JSInterfaceJIT::emitFastArithImmToInt):
File:
1 edited

Legend:

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

    r58902 r59056  
    170170        Jump emitJumpIfImmediateNumber(RegisterID reg);
    171171        Jump emitJumpIfNotImmediateNumber(RegisterID reg);
     172        void emitFastArithImmToInt(RegisterID reg);
    172173#endif
    173174
     
    261262        return notNumber;
    262263    }
    263 
     264   
     265    ALWAYS_INLINE void JSInterfaceJIT::emitFastArithImmToInt(RegisterID)
     266    {
     267    }
     268   
    264269#endif
    265270
     
    284289        return jump();
    285290    }
     291   
     292    ALWAYS_INLINE void JSInterfaceJIT::emitFastArithImmToInt(RegisterID reg)
     293    {
     294        rshift32(Imm32(JSImmediate::IntegerPayloadShift), reg);
     295    }
     296   
    286297#endif
    287298
Note: See TracChangeset for help on using the changeset viewer.