• ggaren@apple.com's avatar
    Removed the concept of a "fast access cutoff" in arrays, because it · 570483e7
    ggaren@apple.com authored
    punished some patterns of array access too much, and made things too
    complex for inlining in some cases.
            
    Patch by Geoffrey Garen <ggaren@apple.com> on 2009-10-02
    Reviewed by Sam Weinig.
    
    1.3% speedup on SunSpider.
    
    * jit/JITOpcodes.cpp:
    (JSC::JIT::emitSlow_op_get_by_val):
    (JSC::JIT::emitSlow_op_put_by_val):
    * jit/JITPropertyAccess.cpp:
    (JSC::JIT::emit_op_get_by_val):
    (JSC::JIT::emitSlow_op_get_by_val):
    (JSC::JIT::emit_op_put_by_val):
    (JSC::JIT::emitSlow_op_put_by_val):
    * jit/JITStubs.cpp:
    * jit/JITStubs.h:
    (JSC::): Check m_vectorLength instead of m_fastAccessCutoff when
    getting / putting from / to an array. Inline putting past the end of
    the array.
    
    * runtime/JSArray.cpp:
    (JSC::JSArray::JSArray):
    (JSC::JSArray::getOwnPropertySlot):
    (JSC::JSArray::getOwnPropertyDescriptor):
    (JSC::JSArray::put):
    (JSC::JSArray::putSlowCase):
    (JSC::JSArray::deleteProperty):
    (JSC::JSArray::getOwnPropertyNames):
    (JSC::JSArray::increaseVectorLength):
    (JSC::JSArray::setLength):
    (JSC::JSArray::pop):
    (JSC::JSArray::push):
    (JSC::JSArray::sort):
    (JSC::JSArray::fillArgList):
    (JSC::JSArray::copyToRegisters):
    (JSC::JSArray::compactForSorting):
    (JSC::JSArray::checkConsistency):
    * runtime/JSArray.h:
    (JSC::JSArray::canGetIndex):
    (JSC::JSArray::canSetIndex):
    (JSC::JSArray::setIndex):
    (JSC::JSArray::markChildrenDirect): Removed m_fastAccessCutoff, and
    replaced with checks for JSValue() to detect reads and writes from / to
    uninitialized parts of the array.
    
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@49065 268f45cc-cd09-0410-ab3c-d52691b4dbfc
    570483e7
JSArray.cpp 35.4 KB