Skip to content

Commit c94f346

Browse files
tniessenaddaleax
authored andcommitted
net: use rest parameters instead of arguments
In v8 6.0, rest parameters are significantly faster than other ways to create an array of the arguments, even for small numbers. PR-URL: #13472 Refs: #13430 Reviewed-By: Matteo Collina <[email protected]> Reviewed-By: Refael Ackermann <[email protected]> Reviewed-By: James M Snell <[email protected]> Reviewed-By: Joyee Cheung <[email protected]>
1 parent 8433b1a commit c94f346

File tree

1 file changed

+5
-17
lines changed

1 file changed

+5
-17
lines changed

lib/net.js

Lines changed: 5 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -91,11 +91,7 @@ function createServer(options, connectionListener) {
9191
// connect(port, [host], [cb])
9292
// connect(path, [cb]);
9393
//
94-
function connect() {
95-
var args = new Array(arguments.length);
96-
for (var i = 0; i < arguments.length; i++)
97-
args[i] = arguments[i];
98-
// TODO(joyeecheung): use destructuring when V8 is fast enough
94+
function connect(...args) {
9995
var normalized = normalizeArgs(args);
10096
var options = normalized[0];
10197
debug('createConnection', normalized);
@@ -948,19 +944,15 @@ function internalConnect(
948944
}
949945

950946

951-
Socket.prototype.connect = function() {
947+
Socket.prototype.connect = function(...args) {
952948
let normalized;
953949
// If passed an array, it's treated as an array of arguments that have
954950
// already been normalized (so we don't normalize more than once). This has
955951
// been solved before in https://github.com/nodejs/node/pull/12342, but was
956952
// reverted as it had unintended side effects.
957-
if (Array.isArray(arguments[0]) && arguments[0][normalizedArgsSymbol]) {
958-
normalized = arguments[0];
953+
if (Array.isArray(args[0]) && args[0][normalizedArgsSymbol]) {
954+
normalized = args[0];
959955
} else {
960-
var args = new Array(arguments.length);
961-
for (var i = 0; i < arguments.length; i++)
962-
args[i] = arguments[i];
963-
// TODO(joyeecheung): use destructuring when V8 is fast enough
964956
normalized = normalizeArgs(args);
965957
}
966958
var options = normalized[0];
@@ -1420,11 +1412,7 @@ function listenInCluster(server, address, port, addressType,
14201412
}
14211413

14221414

1423-
Server.prototype.listen = function() {
1424-
var args = new Array(arguments.length);
1425-
for (var i = 0; i < arguments.length; i++)
1426-
args[i] = arguments[i];
1427-
// TODO(joyeecheung): use destructuring when V8 is fast enough
1415+
Server.prototype.listen = function(...args) {
14281416
var normalized = normalizeArgs(args);
14291417
var options = normalized[0];
14301418
var cb = normalized[1];

0 commit comments

Comments
 (0)