• mbrandy's avatar
    PPC: [runtime] Optimize and unify rest parameters. · 605aced0
    mbrandy authored
    Port 3ef573e9
    
    Original commit message:
        Replace the somewhat awkward RestParamAccessStub, which would always
        call into the runtime anyway with a proper FastNewRestParameterStub,
        which is basically based on the code that was already there for strict
        arguments object materialization. But for rest parameters we could
        optimize even further (leading to 8-10x improvements for functions with
        rest parameters), by fixing the internal formal parameter count:
    
        Every SharedFunctionInfo has a formal_parameter_count field, which
        specifies the number of formal parameters, and is used to decide whether
        we need to create an arguments adaptor frame when calling a function
        (i.e. if there's a mismatch between the actual and expected parameters).
        Previously the formal_parameter_count included the rest parameter, which
        was sort of unfortunate, as that meant that calling a function with only
        the non-rest parameters still required an arguments adaptor (plus some
        other oddities). Now with this CL we fix, so that we do no longer
        include the rest parameter in that count. Thereby checking for rest
        parameters is very efficient, as we only need to check whether there is
        an arguments adaptor frame, and if not create an empty array, otherwise
        check whether the arguments adaptor frame has more parameters than
        specified by the formal_parameter_count.
    
        The FastNewRestParameterStub is written in a way that it can be directly
        used by Ignition as well, and with some tweaks to the TurboFan backends
        and the CodeStubAssembler, we should be able to rewrite it as
        TurboFanCodeStub in the near future.
    
        Drive-by-fix: Refactor and unify the CreateArgumentsType which was
        different in TurboFan and Ignition; now we have a single enum class
        xwhich is used in both TurboFan and Ignition.
    
    R=bmeurer@chromium.org, joransiu@ca.ibm.com, jyan@ca.ibm.com, michael_dawson@ca.ibm.com
    BUG=v8:2159
    LOG=n
    
    Review URL: https://codereview.chromium.org/1677223002
    
    Cr-Commit-Position: refs/heads/master@{#33829}
    605aced0
Name
Last commit
Last update
benchmarks Loading commit data...
build Loading commit data...
docs 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...
.ycm_extra_conf.py Loading commit data...
AUTHORS Loading commit data...
BUILD.gn Loading commit data...
ChangeLog Loading commit data...
DEPS Loading commit data...
LICENSE 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...
Makefile.nacl 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...