f6db05660e
There are a bunch of places in our builtins where we use %_Arguments and %_ArgumentsLength for no good reason, as arguments object and/or rest parameter is as good and performant in these cases. Now the only uses of %_Arguments and %_ArgumentsLength left are in string.js, which requires dedicated investigation. CQ_INCLUDE_TRYBOTS=tryserver.v8:v8_linux_nosnap_dbg R=yangguo@chromium.org Committed: https://crrev.com/2160429fd458e3c095475e718c97f77ac90d906f Cr-Commit-Position: refs/heads/master@{#33834} Review URL: https://codereview.chromium.org/1678953004 Cr-Commit-Position: refs/heads/master@{#33881}
57 lines
1.2 KiB
JavaScript
57 lines
1.2 KiB
JavaScript
// Copyright 2015 the V8 project authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style license that can be
|
|
// found in the LICENSE file.
|
|
|
|
(function(global, utils) {
|
|
|
|
'use strict';
|
|
|
|
// -------------------------------------------------------------------
|
|
// Imports
|
|
var InternalArray = utils.InternalArray;
|
|
var MakeTypeError;
|
|
|
|
utils.Import(function(from) {
|
|
MakeTypeError = from.MakeTypeError;
|
|
});
|
|
|
|
// -------------------------------------------------------------------
|
|
|
|
function SpreadArguments() {
|
|
var count = arguments.length;
|
|
var args = new InternalArray();
|
|
|
|
for (var i = 0; i < count; ++i) {
|
|
var array = arguments[i];
|
|
var length = array.length;
|
|
for (var j = 0; j < length; ++j) {
|
|
args.push(array[j]);
|
|
}
|
|
}
|
|
|
|
return args;
|
|
}
|
|
|
|
|
|
function SpreadIterable(collection) {
|
|
if (IS_NULL_OR_UNDEFINED(collection)) {
|
|
throw MakeTypeError(kNotIterable, collection);
|
|
}
|
|
|
|
var args = new InternalArray();
|
|
for (var value of collection) {
|
|
args.push(value);
|
|
}
|
|
return args;
|
|
}
|
|
|
|
// ----------------------------------------------------------------------------
|
|
// Exports
|
|
|
|
%InstallToContext([
|
|
"spread_arguments", SpreadArguments,
|
|
"spread_iterable", SpreadIterable,
|
|
]);
|
|
|
|
})
|