From 630f63633490f60a292e62bb7a82bd9ea4de68c4 Mon Sep 17 00:00:00 2001 From: Brian White Date: Tue, 10 Feb 2015 13:12:09 -0500 Subject: [PATCH] events: move slow path to separate function too This keeps in line with how things are done for the fast path and *might* even provide a *slight* performance increase. PR-URL: https://github.com/iojs/io.js/pull/785 Reviewed-By: Ben Noordhuis Reviewed-By: Evan Lucas --- lib/events.js | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/lib/events.js b/lib/events.js index 3e6f1aff362c40..33bcc185337079 100644 --- a/lib/events.js +++ b/lib/events.js @@ -101,8 +101,19 @@ function emitThree(handler, isFn, self, arg1, arg2, arg3) { } } +function emitMany(handler, isFn, self, args) { + if (isFn) + handler.apply(self, args); + else { + var len = handler.length; + var listeners = arrayClone(handler, len); + for (var i = 0; i < len; ++i) + listeners[i].apply(self, args); + } +} + EventEmitter.prototype.emit = function emit(type) { - var er, handler, len, args, i, listeners, events, domain; + var er, handler, len, args, i, events, domain; var needDomainExit = false; events = this._events; @@ -160,14 +171,7 @@ EventEmitter.prototype.emit = function emit(type) { args = new Array(len - 1); for (i = 1; i < len; i++) args[i - 1] = arguments[i]; - if (isFn) - handler.apply(this, args); - else { - len = handler.length; - listeners = arrayClone(handler, len); - for (i = 0; i < len; ++i) - listeners[i].apply(this, args); - } + emitMany(handler, isFn, this, args); } if (needDomainExit)