Skip to content

Commit c7b2e29

Browse files
committed
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.
1 parent 4b8629d commit c7b2e29

File tree

1 file changed

+4
-5
lines changed

1 file changed

+4
-5
lines changed

lib/events.js

+4-5
Original file line numberDiff line numberDiff line change
@@ -23,13 +23,16 @@ var isArray = Array.isArray;
2323
var domain;
2424

2525
function EventEmitter() {
26+
this.domain = null;
2627
if (exports.usingDomains) {
2728
// if there is an active domain, then attach to it.
2829
domain = domain || require('domain');
2930
if (domain.active && !(this instanceof domain.Domain)) {
3031
this.domain = domain.active;
3132
}
3233
}
34+
this._events = null;
35+
this._maxListeners = defaultMaxListeners;
3336
}
3437
exports.EventEmitter = EventEmitter;
3538

@@ -161,11 +164,7 @@ EventEmitter.prototype.addListener = function(type, listener) {
161164
// Check for listener leak
162165
if (isArray(this._events[type]) && !this._events[type].warned) {
163166
var m;
164-
if (this._maxListeners !== undefined) {
165-
m = this._maxListeners;
166-
} else {
167-
m = defaultMaxListeners;
168-
}
167+
m = this._maxListeners;
169168

170169
if (m && m > 0 && this._events[type].length > m) {
171170
this._events[type].warned = true;

0 commit comments

Comments
 (0)