if (!handler) return false;
if (typeof handler == 'function') {
- if (arguments.length <= 3) {
- // fast case
- handler.call(this, arguments[1], arguments[2]);
- } else {
+ switch (arguments.length) {
+ // fast cases
+ case 1:
+ handler.call(this);
+ break;
+ case 2:
+ handler.call(this, arguments[1]);
+ break;
+ case 3:
+ handler.call(this, arguments[1], arguments[2]);
+ break;
// slower
- var args = Array.prototype.slice.call(arguments, 1);
- handler.apply(this, args);
+ default:
+ var args = Array.prototype.slice.call(arguments, 1);
+ handler.apply(this, args);
}
return true;
} else if (isArray(handler)) {
var args = Array.prototype.slice.call(arguments, 1);
-
var listeners = handler.slice();
for (var i = 0, l = listeners.length; i < l; i++) {
listeners[i].apply(this, args);
--- /dev/null
+common = require("../common");
+assert = common.assert
+var events = require('events');
+
+var e = new events.EventEmitter(),
+ num_args_emited = [];
+
+e.on("numArgs", function() {
+ var numArgs = arguments.length;
+ console.log("numArgs: " + numArgs);
+ num_args_emited.push(numArgs);
+});
+
+console.log("start");
+
+e.emit("numArgs");
+e.emit("numArgs", null);
+e.emit("numArgs", null, null);
+e.emit("numArgs", null, null, null);
+e.emit("numArgs", null, null, null, null);
+e.emit("numArgs", null, null, null, null, null);
+
+process.addListener("exit", function () {
+ assert.deepEqual([0, 1, 2, 3, 4, 5], num_args_emited);
+});
+
+