• Georg Neis's avatar
    [ic] EmitElementStore: don't miss when hitting new space limit. · af677f29
    Georg Neis authored
    CSA::EmitElementStore used to bail out (IC miss) via
    CSA::CheckForCapacityGrow when the capacity hits the new space
    limit, causing the store IC to go megamorphic in my example (see
    referenced bug). With this CL, we do what TF'ed code does already:
    call into Runtime::kGrowArrayElements (in this situation), thus
    staying monomorphic.
    
    Here's a contrived test case:
    
    ////////////////////////
    let x = [];
    
    function bar() {
      for (let i = 0; i < 50000; ++i) x[i] = i;
    }
    
    function foo() {
      for (let i = x.length; i < 100e6; ++i) x[i] = i;
    }
    
    bar();
    foo();
    ////////////////////////
    
    This took about 4s on my machine, now it takes 3s.
    
    Bug: v8:7447
    Change-Id: I7f268fc55835f363d250613ce0357444a663051c
    Reviewed-on: https://chromium-review.googlesource.com/918723
    Commit-Queue: Georg Neis <neis@chromium.org>
    Reviewed-by: 's avatarBenedikt Meurer <bmeurer@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#51297}
    af677f29
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...