• Simon Zünd's avatar
    [array] Move Array#sort pre-processing to Torque · 2b0ac2fb
    Simon Zünd authored
    This CL removes the "PrepareElementsForSort" runtime function, and
    replaces it with a simpler version in Torque. The biggest difference
    is that certain sparse configurations no longer have a fast-path.
    
    The Torque pre-processing step replaces the existing Torque mechanism that
    copied already pre-processed elements into the "work" FixedArray. The Torque
    compacting works as follows:
      - Iterate all elements from 0 to {length}
        - If the element is the hole: Do nothing.
        - If the element is "undefined": Increment undefined counter.
        - In all other cases, push the element into the "work" FixedArray.
    
    Then the "work" FixedArray is sorted as before. Writing the elements from
    the "work" array back into the receiver, after sorting, has three steps:
      1. Copy the sorted elements from the "work" FixedArray to the receiver.
      2. Add previously counted number of "undefined" to the receiver.
      3. Depending on the backing store either delete properties or
         set them to the Hole up to {length}.
    
    Bug: v8:8714
    Change-Id: I14eccb7cfd2e4618bce2a85cba0689d7e0380ad2
    Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1619756
    Commit-Queue: Simon Zünd <szuend@chromium.org>
    Reviewed-by: 's avatarTobias Tebbi <tebbi@chromium.org>
    Reviewed-by: 's avatarJakob Gruber <jgruber@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#61812}
    2b0ac2fb
Name
Last commit
Last update
..
Array Loading commit data...
ArrayInOperator Loading commit data...
ArrayIndexOfIncludesPolymorphic Loading commit data...
ArrayLiteralInitialSpreadLargeDoubleHoley Loading commit data...
ArrayLiteralInitialSpreadLargeDoublePacked Loading commit data...
ArrayLiteralInitialSpreadLargeHoley Loading commit data...
ArrayLiteralInitialSpreadLargePacked Loading commit data...
ArrayLiteralInitialSpreadLargeSmiMap Loading commit data...
ArrayLiteralInitialSpreadLargeSmiSet Loading commit data...
ArrayLiteralInitialSpreadSmallDoubleHoley Loading commit data...
ArrayLiteralInitialSpreadSmallDoublePacked Loading commit data...
ArrayLiteralInitialSpreadSmallHoley Loading commit data...
ArrayLiteralInitialSpreadSmallPacked Loading commit data...
ArrayLiteralInitialSpreadSmallSmiMap Loading commit data...
ArrayLiteralInitialSpreadSmallSmiSet Loading commit data...
ArrayLiteralSpread Loading commit data...
ArraySort Loading commit data...
AsyncAwait Loading commit data...
BigInt Loading commit data...
BytecodeHandlers Loading commit data...
Classes Loading commit data...
Closures Loading commit data...
Collections Loading commit data...
DataView Loading commit data...
Dates Loading commit data...
Exceptions Loading commit data...
ExpressionDepth Loading commit data...
ForLoops Loading commit data...
Generators Loading commit data...
Inspector Loading commit data...
Intl Loading commit data...
Iterators Loading commit data...
Keys Loading commit data...
ManyClosures Loading commit data...
Modules Loading commit data...
Numbers Loading commit data...
Object Loading commit data...
ObjectFreeze Loading commit data...
ObjectLiteralSpread Loading commit data...
Parsing Loading commit data...
PropertyQueries Loading commit data...
Proxies Loading commit data...
RegExp Loading commit data...
RestParameters Loading commit data...
Scope Loading commit data...
SixSpeed Loading commit data...
SpreadCalls Loading commit data...
SpreadCallsGeneral Loading commit data...
StackTrace Loading commit data...
StringIterators Loading commit data...
Strings Loading commit data...
Templates Loading commit data...
TurboFan Loading commit data...
TypedArrays Loading commit data...
JSTests1.json Loading commit data...
JSTests2.json Loading commit data...
JSTests3.json Loading commit data...
JSTests4.json Loading commit data...
JSTests5.json Loading commit data...
OWNERS Loading commit data...
RegExp.json Loading commit data...
SixSpeed.json Loading commit data...
base.js Loading commit data...