mirror of https://github.com/nodejs/node.git
Optimize for few args in EventEmitter.emit
parent
6abdf051d3
commit
0633e5cac9
|
@ -2,9 +2,10 @@ exports.EventEmitter = process.EventEmitter;
|
||||||
|
|
||||||
|
|
||||||
process.EventEmitter.prototype.emit = function (type) {
|
process.EventEmitter.prototype.emit = function (type) {
|
||||||
if (type == 'error') {
|
// If there is no 'error' event listener then throw.
|
||||||
|
if (type === 'error') {
|
||||||
if (!this._events || !this._events.error ||
|
if (!this._events || !this._events.error ||
|
||||||
(this._events.error instanceof Array && !this._events.error.length))
|
(this._events.error instanceof Array && !this._events.error.length))
|
||||||
{
|
{
|
||||||
if (arguments[1] instanceof Error) {
|
if (arguments[1] instanceof Error) {
|
||||||
throw arguments[1];
|
throw arguments[1];
|
||||||
|
@ -19,15 +20,23 @@ process.EventEmitter.prototype.emit = function (type) {
|
||||||
if (!this._events[type]) return false;
|
if (!this._events[type]) return false;
|
||||||
|
|
||||||
if (typeof this._events[type] == 'function') {
|
if (typeof this._events[type] == 'function') {
|
||||||
var args = Array.prototype.slice.call(arguments, 1);
|
if (arguments.length < 3) {
|
||||||
|
// fast case
|
||||||
this._events[type].apply(this, args);
|
this._events[type].call( this
|
||||||
|
, arguments[1]
|
||||||
|
, arguments[2]
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
// slower
|
||||||
|
var args = Array.prototype.slice.call(arguments, 1);
|
||||||
|
this._events[type].apply(this, args);
|
||||||
|
}
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
} else if (this._events[type] instanceof Array) {
|
} else if (this._events[type] instanceof Array) {
|
||||||
var args = Array.prototype.slice.call(arguments, 1);
|
var args = Array.prototype.slice.call(arguments, 1);
|
||||||
|
|
||||||
|
|
||||||
var listeners = this._events[type].slice(0);
|
var listeners = this._events[type].slice(0);
|
||||||
for (var i = 0, l = listeners.length; i < l; i++) {
|
for (var i = 0, l = listeners.length; i < l; i++) {
|
||||||
listeners[i].apply(this, args);
|
listeners[i].apply(this, args);
|
||||||
|
|
Loading…
Reference in New Issue