DescriptionPPC/s390: [turbofan] Avoid allocating rest parameters for spread calls.
Port bfa319e5d3f902e504c00af5607117d1eb5d6273
Original Commit Message:
We already had an optimization to turn Function.prototype.apply with
arguments object, i.e.
function foo() { return bar.apply(this, arguments); }
into a special operator JSCallForwardVarargs, which avoids the
allocation and deconstruction of the arguments object, but just passes
along the incoming parameters. We can do the same for rest parameters
and spread calls/constructs, i.e.
class A extends B {
constructor(...args) { super(...args); }
}
or
function foo(...args) { return bar(1, 2, 3, ...args); }
where we basically pass along the parameters (plus maybe additional
statically known parameters).
For this, we introduce a new JSConstructForwardVarargs operator and
generalize the CallForwardVarargs builtins that are backing this.
R=bmeurer@chromium.org, joransiu@ca.ibm.com, jyan@ca.ibm.com, michael_dawson@ca.ibm.com
BUG=v8:6407, v8:6278, v8:6344
LOG=N
Review-Url: https://codereview.chromium.org/2887153004
Cr-Commit-Position: refs/heads/master@{#45402}
Committed: https://chromium.googlesource.com/v8/v8/+/f4da43618c18c0c0f6b3a4b488f822f8d40b04ab
Patch Set 1 #Patch Set 2 : minor fix #
Messages
Total messages: 7 (3 generated)
|