summaryrefslogtreecommitdiff
path: root/lib/events.js
diff options
context:
space:
mode:
authorisaacs <i@izs.me>2012-09-28 09:47:48 -0700
committerisaacs <i@izs.me>2012-09-28 09:47:48 -0700
commitae40f1c438050bf4607143862259ae10931e3a3c (patch)
tree0e90ed620fd8dd2eab01388eacbfae1615359553 /lib/events.js
parentd68c02e3fe50405279a138e908701558939ce926 (diff)
parent33a5c8a814483ff48ba3acd94e091335b3536870 (diff)
downloadnode-new-ae40f1c438050bf4607143862259ae10931e3a3c.tar.gz
Merge remote-tracking branch 'ry/v0.8' into v0.8-merge
Conflicts: AUTHORS ChangeLog deps/openssl/openssl.gyp deps/uv/src/unix/linux/linux-core.c deps/uv/src/unix/process.c deps/uv/src/unix/stream.c deps/v8/src/arm/builtins-arm.cc deps/v8/src/arm/code-stubs-arm.cc deps/v8/src/arm/full-codegen-arm.cc lib/tls.js src/node_version.h test/simple/test-http-client-timeout-agent.js
Diffstat (limited to 'lib/events.js')
-rw-r--r--lib/events.js16
1 files changed, 12 insertions, 4 deletions
diff --git a/lib/events.js b/lib/events.js
index 11f91b5ccb..d71380dcd6 100644
--- a/lib/events.js
+++ b/lib/events.js
@@ -45,6 +45,8 @@ EventEmitter.prototype.setMaxListeners = function(n) {
this._maxListeners = n;
};
+// non-global reference, for speed.
+var PROCESS;
EventEmitter.prototype.emit = function() {
var type = arguments[0];
@@ -77,7 +79,10 @@ EventEmitter.prototype.emit = function() {
if (typeof handler == 'function') {
if (this.domain) {
- this.domain.enter();
+ PROCESS = PROCESS || process;
+ if (this !== PROCESS) {
+ this.domain.enter();
+ }
}
switch (arguments.length) {
// fast cases
@@ -97,14 +102,17 @@ EventEmitter.prototype.emit = function() {
for (var i = 1; i < l; i++) args[i - 1] = arguments[i];
handler.apply(this, args);
}
- if (this.domain) {
+ if (this.domain && this !== PROCESS) {
this.domain.exit();
}
return true;
} else if (isArray(handler)) {
if (this.domain) {
- this.domain.enter();
+ PROCESS = PROCESS || process;
+ if (this !== PROCESS) {
+ this.domain.enter();
+ }
}
var l = arguments.length;
var args = new Array(l - 1);
@@ -114,7 +122,7 @@ EventEmitter.prototype.emit = function() {
for (var i = 0, l = listeners.length; i < l; i++) {
listeners[i].apply(this, args);
}
- if (this.domain) {
+ if (this.domain && this !== PROCESS) {
this.domain.exit();
}
return true;