• danno's avatar
    [builtins] Separate Array.prototype.* CSA builtins into two parts · 7de21c4d
    danno authored
    Previous to this CL, CSA-optimized Array builtins--like forEach, some, and
    every--were written in a single, monolithic block of CSA code.
    
    This CL teases the code for each of these builtins apart into two chunks, a main
    body with optimizations for fast cases, and a "continuation" builtin that
    performs a spec-compliant, but slower version of the main loop of the
    builtin. The general idea is that when the "fast" main body builtin encounters
    an unexpected condition that invalidates assumptions allowing fast-case code, it
    tail calls to the slow, correct version of the loop that finishes the builtin
    execution.
    
    This separation currently doens't really provide any specific advantage over the
    combined version. However, it paves the way to TF-optimized inlined Array
    builtins. Inlined Array builtins may trigger deopts during the execution of the
    builtin's loop, and those deopt must continue execution from the point at which
    they failed. With some massaging of the deoptimizer, it will be possible to make
    those deopt points create an extra frame on the top of the stack which resumes
    execution in the slow-loop builtin created in this CL.
    
    BUG=v8:1956
    LOG=N
    
    Review-Url: https://codereview.chromium.org/2753793002
    Cr-Commit-Position: refs/heads/master@{#43867}
    7de21c4d
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 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...