• Benedikt Meurer's avatar
    [ic] Support negative indices for typed array OOB accesses. · 317fad95
    Benedikt Meurer authored
    Extend the current OOB support for typed arrays to also handle the
    negative integer indices in the fast-path. This is safe because in
    ECMAScript we never look up integer indexed properties (including
    negative indices) on typed arrays in the prototype chain.
    
    This reduces the performance cliff shown in the benchmark on the
    relevant bug from
    
      console.timeEnd: Runtime deopt, 596.185000
      console.timeEnd: Runtime deopt, 1444.289000
      console.timeEnd: Runtime deopt, 1445.191000
      console.timeEnd: Runtime deopt, 1443.008000
    
    to
    
      console.timeEnd: Runtime deopt, 590.017000
      console.timeEnd: Runtime deopt, 784.899000
      console.timeEnd: Runtime deopt, 792.428000
      console.timeEnd: Runtime deopt, 786.740000
    
    which corresponds to a 2x improvement overall. It's not for free,
    especially not in this benchmark, but the cliff isn't as bad as
    it was previously.
    
    Bug: v8:7027
    Change-Id: Icf8a7ee87bb7ebc54f82c1b9166fc5e78c12bc0e
    Cq-Include-Trybots: master.tryserver.chromium.linux:linux_chromium_rel_ng
    Reviewed-on: https://chromium-review.googlesource.com/911574Reviewed-by: 's avatarJakob Kummerow <jkummerow@chromium.org>
    Commit-Queue: Benedikt Meurer <bmeurer@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#51222}
    317fad95
Name
Last commit
Last update
benchmarks Loading commit data...
build_overrides 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...
.editorconfig Loading commit data...
.git-blame-ignore-revs 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...