• oliver@apple.com's avatar
    Further improve ArrayIterator performance · 585c400c
    oliver@apple.com authored
    https://bugs.webkit.org/show_bug.cgi?id=122575
    
    Reviewed by Mark Hahnenberg.
    
    Source/JavaScriptCore:
    
    Add an assembly thunk for ArrayIterator.@@next so that we
    can avoid marshalling costs when iterating arrays.
    
    * jit/SpecializedThunkJIT.h:
    (JSC::SpecializedThunkJIT::SpecializedThunkJIT):
    (JSC::SpecializedThunkJIT::loadSpecificClassArgument):
    * jit/ThunkGenerators.cpp:
    (JSC::arrayIteratorNextThunkGenerator):
    * jit/ThunkGenerators.h:
    * runtime/ArrayIteratorPrototype.cpp:
    (JSC::ArrayIteratorPrototype::finishCreation):
    * runtime/Intrinsic.h:
    * runtime/JSArrayIterator.h:
    (JSC::JSArrayIterator::offsetOfIterationKind):
    (JSC::JSArrayIterator::offsetOfIteratedObject):
    (JSC::JSArrayIterator::offsetOfNextIndex):
    * runtime/JSCJSValue.h:
    (JSC::JSValue::offsetOfPayload):
    * runtime/JSGlobalObject.cpp:
    (JSC::JSGlobalObject::reset):
    * runtime/JSGlobalObject.h:
    (JSC::JSGlobalObject::iteratorResultStructureOffset):
    * runtime/VM.cpp:
    (JSC::thunkGeneratorForIntrinsic):
    
    LayoutTests:
    
    Add a few new tests to make sure the new asm thunk correctly
    handles non-arrays.
    
    * js/array-iterators-expected.txt:
    * js/script-tests/array-iterators.js:
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@157267 268f45cc-cd09-0410-ab3c-d52691b4dbfc
    585c400c