diff options
author | isaacs <i@izs.me> | 2012-09-28 09:47:48 -0700 |
---|---|---|
committer | isaacs <i@izs.me> | 2012-09-28 09:47:48 -0700 |
commit | ae40f1c438050bf4607143862259ae10931e3a3c (patch) | |
tree | 0e90ed620fd8dd2eab01388eacbfae1615359553 /lib/events.js | |
parent | d68c02e3fe50405279a138e908701558939ce926 (diff) | |
parent | 33a5c8a814483ff48ba3acd94e091335b3536870 (diff) | |
download | node-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.js | 16 |
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; |