• bmeurer's avatar
    [turbofan] Add initial support for growing stores. · e6822a83
    bmeurer authored
    Introduce a dedicated MaybeGrowFastElements simplified operator, which
    tries to grow a fast elements backing store for a given element that
    should be added to an array/object. Use that to lower a growing keyed
    store to a sequence of
    
     1) check index is a valid array index,
     2) check stored value,
     3) maybe grow elements backing store (and deoptimize if it would
        normalize), and
     4) store the actual element.
    
    The actual growing is done by two dedicated GrowFastDoubleElements
    and GrowFastSmiOrObjectElements builtins, which are very similar to
    the GrowArrayElementsStub that is used by Crankshaft.
    
    Drive-by-fix: Turn CopyFixedArray into CopyFastSmiOrObjectElements
    builtin, similar to the new growing builtins, so we don't need to
    inline the store+write barrier for the elements into all optimized
    code objects anymore.
    
    Also fix a bug in the OperationTyper for NumberSilenceNaN, which was
    triggered by this change.
    
    BUG=v8:5272
    
    Review-Url: https://codereview.chromium.org/2227493002
    Cr-Commit-Position: refs/heads/master@{#38418}
    e6822a83
Name
Last commit
Last update
benchmarks Loading commit data...
build_overrides Loading commit data...
docs Loading commit data...
gni Loading commit data...
gypfiles 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/binutils Loading commit data...
tools Loading commit data...
.clang-format Loading commit data...
.gitignore Loading commit data...
.gn 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...
Makefile Loading commit data...
Makefile.android 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...