Add ability for JSArray::unshiftCount to unshift in middle of an array
authormsaboff@apple.com <msaboff@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 26 Sep 2012 18:36:53 +0000 (18:36 +0000)
committermsaboff@apple.com <msaboff@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 26 Sep 2012 18:36:53 +0000 (18:36 +0000)
commit1dab2c6996dafd178c3bc71d6c8d61ed02bba754
tree10112d2a43c651d4e480e6f952000d54923520dd
parent8f87b70d36f839918ef1525f365f3c73a4106fb2
Add ability for JSArray::unshiftCount to unshift in middle of an array
https://bugs.webkit.org/show_bug.cgi?id=97691

Reviewed by Filip Pizlo.

Changed JSArray::unshiftCount and unshiftCountSlowCase to handle unshifting from the middle of an
array.  Depending on where the unshift point is, either the front part of the array will be moved
"left" or the back part will be moved right.  Given that unshiftCount only works on contiguous
arrays it is safe to use memmove for the moves.

This change is worth 25% performance improvement on pdfjs.  It doesn't seem to have any impact on
any other benchmarks.

* runtime/ArrayPrototype.cpp:
(JSC::unshift):
* runtime/JSArray.cpp:
(JSC::JSArray::unshiftCountSlowCase):
(JSC::JSArray::unshiftCount):
* runtime/JSArray.h:
(JSArray):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@129676 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Source/JavaScriptCore/ChangeLog
Source/JavaScriptCore/runtime/ArrayPrototype.cpp
Source/JavaScriptCore/runtime/JSArray.cpp
Source/JavaScriptCore/runtime/JSArray.h