• Simon Zünd's avatar
    Reland "[array] Move Array#sort pre-processing to Torque" · 843b6646
    Simon Zünd authored
    This is a reland of 2b0ac2fb
    
    The layout test that caused this revert was fixed with:
    https://crrev.com/c/1627386
    
    Original change's description:
    > [array] Move Array#sort pre-processing to Torque
    >
    > 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: Tobias Tebbi <tebbi@chromium.org>
    > Reviewed-by: Jakob Gruber <jgruber@chromium.org>
    > Cr-Commit-Position: refs/heads/master@{#61812}
    
    TBR: jgruber@chromium.org
    Bug: v8:8714
    Change-Id: If7613f6e5f37c5e0d649e8192195594bc6c32100
    Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1627977
    Commit-Queue: Simon Zünd <szuend@chromium.org>
    Auto-Submit: Simon Zünd <szuend@chromium.org>
    Reviewed-by: 's avatarTobias Tebbi <tebbi@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#61827}
    843b6646
js-objects.h 59.7 KB