• 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
..
runtime-array.cc Loading commit data...
runtime-atomics.cc Loading commit data...
runtime-bigint.cc Loading commit data...
runtime-classes.cc Loading commit data...
runtime-collections.cc Loading commit data...
runtime-compiler.cc Loading commit data...
runtime-date.cc Loading commit data...
runtime-debug.cc Loading commit data...
runtime-error.cc Loading commit data...
runtime-forin.cc Loading commit data...
runtime-function.cc Loading commit data...
runtime-futex.cc Loading commit data...
runtime-generator.cc Loading commit data...
runtime-internal.cc Loading commit data...
runtime-interpreter.cc Loading commit data...
runtime-intl.cc Loading commit data...
runtime-literals.cc Loading commit data...
runtime-liveedit.cc Loading commit data...
runtime-maths.cc Loading commit data...
runtime-module.cc Loading commit data...
runtime-numbers.cc Loading commit data...
runtime-object.cc Loading commit data...
runtime-operators.cc Loading commit data...
runtime-promise.cc Loading commit data...
runtime-proxy.cc Loading commit data...
runtime-regexp.cc Loading commit data...
runtime-scopes.cc Loading commit data...
runtime-strings.cc Loading commit data...
runtime-symbol.cc Loading commit data...
runtime-test.cc Loading commit data...
runtime-typedarray.cc Loading commit data...
runtime-utils.h Loading commit data...
runtime-wasm.cc Loading commit data...
runtime.cc Loading commit data...
runtime.h Loading commit data...