events: Make the EventEmitter class monomorphic
Always add domain, _events, and _maxListeners properties, set to the default values at first. Leads to a very very slight perf improvement when using setMaxListeners, or dealing with a lot of EE objects that don't have any listeners.
This commit is contained in:
parent
4b8629db37
commit
c7b2e29e5e
@ -23,6 +23,7 @@ var isArray = Array.isArray;
|
|||||||
var domain;
|
var domain;
|
||||||
|
|
||||||
function EventEmitter() {
|
function EventEmitter() {
|
||||||
|
this.domain = null;
|
||||||
if (exports.usingDomains) {
|
if (exports.usingDomains) {
|
||||||
// if there is an active domain, then attach to it.
|
// if there is an active domain, then attach to it.
|
||||||
domain = domain || require('domain');
|
domain = domain || require('domain');
|
||||||
@ -30,6 +31,8 @@ function EventEmitter() {
|
|||||||
this.domain = domain.active;
|
this.domain = domain.active;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
this._events = null;
|
||||||
|
this._maxListeners = defaultMaxListeners;
|
||||||
}
|
}
|
||||||
exports.EventEmitter = EventEmitter;
|
exports.EventEmitter = EventEmitter;
|
||||||
|
|
||||||
@ -161,11 +164,7 @@ EventEmitter.prototype.addListener = function(type, listener) {
|
|||||||
// Check for listener leak
|
// Check for listener leak
|
||||||
if (isArray(this._events[type]) && !this._events[type].warned) {
|
if (isArray(this._events[type]) && !this._events[type].warned) {
|
||||||
var m;
|
var m;
|
||||||
if (this._maxListeners !== undefined) {
|
m = this._maxListeners;
|
||||||
m = this._maxListeners;
|
|
||||||
} else {
|
|
||||||
m = defaultMaxListeners;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (m && m > 0 && this._events[type].length > m) {
|
if (m && m > 0 && this._events[type].length > m) {
|
||||||
this._events[type].warned = true;
|
this._events[type].warned = true;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user