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
This commit is contained in:
parent
4ca7cca84a
commit
cca8de6709
22
lib/net.js
22
lib/net.js
@ -48,8 +48,8 @@ function isPipeName(s) {
|
||||
return typeof s === 'string' && toNumber(s) === false;
|
||||
}
|
||||
|
||||
exports.createServer = function() {
|
||||
return new Server(arguments[0], arguments[1]);
|
||||
exports.createServer = function(options, connectionListener) {
|
||||
return new Server(options, connectionListener);
|
||||
};
|
||||
|
||||
|
||||
@ -991,22 +991,24 @@ function afterConnect(status, handle, req, readable, writable) {
|
||||
}
|
||||
|
||||
|
||||
function Server(/* [ options, ] listener */) {
|
||||
if (!(this instanceof Server)) return new Server(arguments[0], arguments[1]);
|
||||
function Server(options, connectionListener) {
|
||||
if (!(this instanceof Server))
|
||||
return new Server(options, connectionListener);
|
||||
|
||||
events.EventEmitter.call(this);
|
||||
|
||||
var self = this;
|
||||
|
||||
var options;
|
||||
|
||||
if (typeof arguments[0] === 'function') {
|
||||
if (typeof options === 'function') {
|
||||
connectionListener = options;
|
||||
options = {};
|
||||
self.on('connection', arguments[0]);
|
||||
self.on('connection', connectionListener);
|
||||
} else {
|
||||
options = arguments[0] || {};
|
||||
options = options || {};
|
||||
|
||||
if (typeof arguments[1] === 'function') {
|
||||
self.on('connection', arguments[1]);
|
||||
if (typeof connectionListener === 'function') {
|
||||
self.on('connection', connectionListener);
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user