• 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...
cctest Loading commit data...
common Loading commit data...
debugger Loading commit data...
fuzzer Loading commit data...
inspector Loading commit data...
intl Loading commit data...
js-perf-test Loading commit data...
memory Loading commit data...
message Loading commit data...
mjsunit Loading commit data...
mkgrokdump Loading commit data...
mozilla Loading commit data...
preparser Loading commit data...
test262 Loading commit data...
unittests Loading commit data...
wasm-spec-tests Loading commit data...
webkit Loading commit data...
BUILD.gn Loading commit data...
bot_default.isolate Loading commit data...
d8_default.isolate Loading commit data...
default.isolate Loading commit data...
optimize_for_size.isolate Loading commit data...
perf.isolate Loading commit data...