• Peter Marshall's avatar
    [typedarray] Use fast path for Float32Array.from(float_64_array) and similar · c7c0e110
    Peter Marshall authored
    Currently, because the source float_64_array has an iterator, it hits
    the code in the "check_iterator" section of TypedArrayFrom which calls
    IterableToList. This builds a temporary PACKED_ELEMENTS array (and boxes
    all of the numeric values as HeapNumbers), then uses this as the source
    array.
    
    This patch checks if the source array is a TypedArray, and if the iterator
    is the built-in one (where we know the iterator's behaviour). If both are
    true then it bypasses the creation of this temporary array and uses the
    original TypedArray as the source.
    
    This allows it to take advantage of the existing fast code for copying one
    typed array to another.
    
    R=hablich@chromium.org, petermarshall@chromium.org
    
    Bug: chromium:884671
    Change-Id: I19a944c9d6d5d07699c7dc3ad7196fc871200b62
    Reviewed-on: https://chromium-review.googlesource.com/c/1297312Reviewed-by: 's avatarPeter Marshall <petermarshall@chromium.org>
    Reviewed-by: 's avatarBenedikt Meurer <bmeurer@chromium.org>
    Commit-Queue: Peter Marshall <petermarshall@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#57022}
    c7c0e110
Name
Last commit
Last update
benchmarks Loading commit data...
build_overrides Loading commit data...
custom_deps Loading commit data...
docs Loading commit data...
gni Loading commit data...
include Loading commit data...
infra Loading commit data...
samples Loading commit data...
src Loading commit data...
test Loading commit data...
testing Loading commit data...
third_party Loading commit data...
tools Loading commit data...
.clang-format Loading commit data...
.clang-tidy Loading commit data...
.editorconfig Loading commit data...
.git-blame-ignore-revs Loading commit data...
.gitattributes Loading commit data...
.gitignore Loading commit data...
.gn Loading commit data...
.vpython Loading commit data...
.ycm_extra_conf.py Loading commit data...
AUTHORS Loading commit data...
BUILD.gn Loading commit data...
CODE_OF_CONDUCT.md Loading commit data...
ChangeLog Loading commit data...
DEPS Loading commit data...
LICENSE Loading commit data...
LICENSE.fdlibm Loading commit data...
LICENSE.strongtalk Loading commit data...
LICENSE.v8 Loading commit data...
LICENSE.valgrind Loading commit data...
OWNERS Loading commit data...
PRESUBMIT.py Loading commit data...
README.md Loading commit data...
WATCHLISTS Loading commit data...
codereview.settings Loading commit data...
snapshot_toolchain.gni Loading commit data...