• danno's avatar
    [turbofan] Support variable size argument removal in TF-generated functions · 5319b50c
    danno authored
    This is preparation for using TF to create builtins that handle variable number of
    arguments and have to remove these arguments dynamically from the stack upon
    return.
    
    The gist of the changes:
    - Added a second argument to the Return node which specifies the number of stack
      slots to pop upon return in addition to those specified by the Linkage of the
      compiled function.
    - Removed Tail -> Non-Tail fallback in the instruction selector. Since TF now should
      handles all tail-call cases except where the return value type differs, this fallback
      was not really useful and in fact caused unexpected behavior with variable
      sized argument popping, since it wasn't possible to materialize a Return node
      with the right pop count from the TailCall without additional context.
    - Modified existing Return generation to pass a constant zero as the additional
      pop argument since the variable pop functionality
    
    LOG=N
    
    Review-Url: https://codereview.chromium.org/2446543002
    Cr-Commit-Position: refs/heads/master@{#40678}
    5319b50c
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...
mozilla Loading commit data...
preparser Loading commit data...
promises-aplus Loading commit data...
simdjs Loading commit data...
test262 Loading commit data...
unittests Loading commit data...
webkit Loading commit data...
BUILD.gn Loading commit data...
bot_default.gyp Loading commit data...
bot_default.isolate Loading commit data...
default.gyp Loading commit data...
default.isolate Loading commit data...
optimize_for_size.gyp Loading commit data...
optimize_for_size.isolate Loading commit data...
perf.gyp Loading commit data...
perf.isolate Loading commit data...