diff options
author | Ben Noordhuis <info@bnoordhuis.nl> | 2012-08-01 01:21:46 +0200 |
---|---|---|
committer | Ben Noordhuis <info@bnoordhuis.nl> | 2012-09-22 03:48:59 +0200 |
commit | b7fd55e9a0fe78d9c258039de51fc38f1ce5a74d (patch) | |
tree | b4a2383f7fa30fee2b6e3983ba2add91f585be99 /lib/events.js | |
parent | 84221fd1d690070877adacd365ac6429b92bd838 (diff) | |
download | node-new-b7fd55e9a0fe78d9c258039de51fc38f1ce5a74d.tar.gz |
events: speed up newListener/removeListener events
Diffstat (limited to 'lib/events.js')
-rw-r--r-- | lib/events.js | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/lib/events.js b/lib/events.js index ee02f15af6..732f16872a 100644 --- a/lib/events.js +++ b/lib/events.js @@ -133,8 +133,10 @@ EventEmitter.prototype.addListener = function(type, listener) { // To avoid recursion in the case that type == "newListeners"! Before // adding it to the listeners, first emit "newListeners". - this.emit('newListener', type, typeof listener.listener === 'function' ? - listener.listener : listener); + if (this._events.newListener) { + this.emit('newListener', type, typeof listener.listener === 'function' ? + listener.listener : listener); + } if (!this._events[type]) { // Optimize the case of one listener. Don't need the extra array object. @@ -217,12 +219,18 @@ EventEmitter.prototype.removeListener = function(type, listener) { list.splice(position, 1); if (list.length == 0) delete this._events[type]; - this.emit('removeListener', type, listener); + + if (this._events.removeListener) { + this.emit('removeListener', type, listener); + } } else if (list === listener || (list.listener && list.listener === listener)) { delete this._events[type]; - this.emit('removeListener', type, listener); + + if (this._events.removeListener) { + this.emit('removeListener', type, listener); + } } return this; |