Browse Source

net: remove use of arguments in Server constructor

The current implementation uses the arguments object in the Server()
constructor. Since both arguments to Server() are optional, there was a
high likelihood of accessing a non-existent element in arguments, which
carries a performance overhead. This commit replaces the arguments
object with named arguments.

Reviewed-by: Trevor Norris <trev.norris@gmail.com>

Conflicts:
	lib/net.js
v1.8.0-commit
cjihrig 11 years ago
parent
commit
cca8de6709
  1. 22
      lib/net.js

22
lib/net.js

@ -48,8 +48,8 @@ function isPipeName(s) {
return typeof s === 'string' && toNumber(s) === false; return typeof s === 'string' && toNumber(s) === false;
} }
exports.createServer = function() { exports.createServer = function(options, connectionListener) {
return new Server(arguments[0], arguments[1]); return new Server(options, connectionListener);
}; };
@ -991,22 +991,24 @@ function afterConnect(status, handle, req, readable, writable) {
} }
function Server(/* [ options, ] listener */) { function Server(options, connectionListener) {
if (!(this instanceof Server)) return new Server(arguments[0], arguments[1]); if (!(this instanceof Server))
return new Server(options, connectionListener);
events.EventEmitter.call(this); events.EventEmitter.call(this);
var self = this; var self = this;
var options; var options;
if (typeof arguments[0] === 'function') { if (typeof options === 'function') {
connectionListener = options;
options = {}; options = {};
self.on('connection', arguments[0]); self.on('connection', connectionListener);
} else { } else {
options = arguments[0] || {}; options = options || {};
if (typeof arguments[1] === 'function') { if (typeof connectionListener === 'function') {
self.on('connection', arguments[1]); self.on('connection', connectionListener);
} }
} }

Loading…
Cancel
Save