• Benedikt Meurer's avatar
    [turbofan] Don't go MEGAMORPHIC when storing oddballs to typed arrays. · e65c0b25
    Benedikt Meurer authored
    The KEYED_STORE_IC was never able to deal with stores to typed arrays
    where the value being stored is not already a Number (i.e. either a Smi
    or a HeapNumber). By extending it to also handle Oddballs (i.e. true,
    false, undefined and null) and teaching TurboFan to also perform the
    appropriate check plus the truncation to Number, we can easily support
    this use case as well.
    
    On the micro-benchmark in the bug report, we go from
    
      typedArrayStoreBool: 2975 ms.
      typedArrayStoreInt: 44 ms.
    
    to
    
      typedArrayStoreBool: 43 ms.
      typedArrayStoreInt: 44 ms.
    
    so that's roughly a 70x performance boost.
    
    Bug: chromium:287773
    Change-Id: I227419aeabc3f5b6793aa280a95448d03ac2f2dd
    Reviewed-on: https://chromium-review.googlesource.com/691731
    Commit-Queue: Benedikt Meurer <bmeurer@chromium.org>
    Reviewed-by: 's avatarMichael Stanton <mvstanton@chromium.org>
    Reviewed-by: 's avatarJaroslav Sevcik <jarin@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#48257}
    e65c0b25
Name
Last commit
Last update
benchmarks Loading commit data...
build_overrides Loading commit data...
docs Loading commit data...
gni Loading commit data...
gypfiles 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...
.editorconfig Loading commit data...
.gitignore Loading commit data...
.gn 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...
Makefile Loading commit data...
Makefile.android 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...