Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nodejs/node.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTrevor Norris <trev.norris@gmail.com>2013-02-26 23:20:19 +0400
committerisaacs <i@izs.me>2013-03-02 05:36:48 +0400
commite1ac2ef7cffac256d794472f02c1160a075379fb (patch)
tree797e1d1d6013c81f85ad42c70b880826589e72c2 /lib/events.js
parent1ccc6fbe05653053bce015e24dd9aaa78b4ecc5b (diff)
events: emit cleanup
Cleanup check logic. Place vars at top. Remove PROCESS.
Diffstat (limited to 'lib/events.js')
-rw-r--r--lib/events.js76
1 files changed, 30 insertions, 46 deletions
diff --git a/lib/events.js b/lib/events.js
index eedd10aa9eb..d9e09bbc928 100644
--- a/lib/events.js
+++ b/lib/events.js
@@ -50,43 +50,38 @@ EventEmitter.prototype.setMaxListeners = function(n) {
this._maxListeners = n;
};
-// non-global reference, for speed.
-var PROCESS;
-
EventEmitter.prototype.emit = function(type) {
+ var er, handler, len, args, i, listeners;
+
// If there is no 'error' event listener then throw.
if (type === 'error') {
if (!this._events.error ||
(typeof this._events.error === 'object' &&
!this._events.error.length)) {
+ er = arguments[1];
if (this.domain) {
- var er = arguments[1];
er.domainEmitter = this;
er.domain = this.domain;
er.domainThrown = false;
this.domain.emit('error', er);
- return false;
- }
-
- if (arguments[1] instanceof Error) {
- throw arguments[1]; // Unhandled 'error' event
+ } else if (er instanceof Error) {
+ throw er; // Unhandled 'error' event
} else {
- throw TypeError("Uncaught, unspecified 'error' event.");
+ throw TypeError('Uncaught, unspecified "error" event.');
}
return false;
}
}
- var handler = this._events[type];
- if (!handler) return false;
+ handler = this._events[type];
+
+ if (typeof handler === 'undefined')
+ return false;
+
+ if (this.domain && this !== process)
+ this.domain.enter();
if (typeof handler == 'function') {
- if (this.domain) {
- PROCESS = PROCESS || process;
- if (this !== PROCESS) {
- this.domain.enter();
- }
- }
switch (arguments.length) {
// fast cases
case 1:
@@ -100,39 +95,28 @@ EventEmitter.prototype.emit = function(type) {
break;
// slower
default:
- var l = arguments.length;
- var args = new Array(l - 1);
- for (var i = 1; i < l; i++) args[i - 1] = arguments[i];
+ len = arguments.length;
+ args = new Array(len - 1);
+ for (i = 1; i < len; i++)
+ args[i - 1] = arguments[i];
handler.apply(this, args);
}
- if (this.domain && this !== PROCESS) {
- this.domain.exit();
- }
- return true;
-
} else if (typeof handler === 'object') {
- if (this.domain) {
- PROCESS = PROCESS || process;
- if (this !== PROCESS) {
- this.domain.enter();
- }
- }
- var l = arguments.length;
- var args = new Array(l - 1);
- for (var i = 1; i < l; i++) args[i - 1] = arguments[i];
-
- var listeners = handler.slice();
- for (var i = 0, l = listeners.length; i < l; i++) {
+ len = arguments.length;
+ args = new Array(len - 1);
+ for (i = 1; i < len; i++)
+ args[i - 1] = arguments[i];
+
+ listeners = handler.slice();
+ len = listeners.length;
+ for (i = 0; i < len; i++)
listeners[i].apply(this, args);
- }
- if (this.domain && this !== PROCESS) {
- this.domain.exit();
- }
- return true;
-
- } else {
- return false;
}
+
+ if (this.domain && this !== process)
+ this.domain.exit();
+
+ return true;
};
EventEmitter.prototype.addListener = function(type, listener) {