• Georg Neis's avatar
    Reland "[ic] EmitElementStore: don't miss when hitting new space limit." · a50bc8ac
    Georg Neis authored
    This is a reland of af677f29, fixing
    an issue with negative indices.
    
    Original change's description:
    > [ic] EmitElementStore: don't miss when hitting new space limit.
    >
    > 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: Benedikt Meurer <bmeurer@chromium.org>
    > Cr-Commit-Position: refs/heads/master@{#51297}
    
    Bug: v8:7447, chromium:812451
    Change-Id: I345b5e5b2437c4f50e42bbd87947630f24cd95eb
    Reviewed-on: https://chromium-review.googlesource.com/921201
    Commit-Queue: Georg Neis <neis@chromium.org>
    Reviewed-by: 's avatarBenedikt Meurer <bmeurer@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#51311}
    a50bc8ac
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...