net: remove use of arguments in Server constructor
authorcjihrig <cjihrig@gmail.com>
Wed, 24 Sep 2014 03:08:35 +0000 (23:08 -0400)
committercjihrig <cjihrig@gmail.com>
Fri, 13 Feb 2015 18:37:25 +0000 (13:37 -0500)
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

lib/net.js

index 294c7f9..9f566b6 100644 (file)
@@ -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);
     }
   }