aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorAnatoli Papirovski <apapirovski@mac.com>2018-05-01 13:32:10 +0200
committerAnatoli Papirovski <apapirovski@mac.com>2018-05-03 14:45:09 +0200
commitfe8794560a22cc62a482bf071e2050ce1ea6ea3e (patch)
tree385772d3828d99e14d805c1aa3196ccebc4e1c78 /lib
parent2553377d118f8762bbb665936e4ce41eb84bf3bb (diff)
downloadandroid-node-v8-fe8794560a22cc62a482bf071e2050ce1ea6ea3e.tar.gz
android-node-v8-fe8794560a22cc62a482bf071e2050ce1ea6ea3e.tar.bz2
android-node-v8-fe8794560a22cc62a482bf071e2050ce1ea6ea3e.zip
events: optimize condition for optimal scenario
Instead of always checking whether we've already warned about a possible EventEmitter memory leak, first run the rest of the code as accessing random properties on an Array is expensive. In addition, remove an unnecessary truthy check. PR-URL: https://github.com/nodejs/node/pull/20452 Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Luigi Pinca <luigipinca@gmail.com> Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl> Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Tobias Nießen <tniessen@tnie.de> Reviewed-By: Trivikram Kamat <trivikr.dev@gmail.com>
Diffstat (limited to 'lib')
-rw-r--r--lib/events.js30
1 files changed, 14 insertions, 16 deletions
diff --git a/lib/events.js b/lib/events.js
index 46d1223e69..ff1648d6aa 100644
--- a/lib/events.js
+++ b/lib/events.js
@@ -235,22 +235,20 @@ function _addListener(target, type, listener, prepend) {
}
// Check for listener leak
- if (!existing.warned) {
- m = $getMaxListeners(target);
- if (m && m > 0 && existing.length > m) {
- existing.warned = true;
- // No error code for this since it is a Warning
- // eslint-disable-next-line no-restricted-syntax
- const w = new Error('Possible EventEmitter memory leak detected. ' +
- `${existing.length} ${String(type)} listeners ` +
- 'added. Use emitter.setMaxListeners() to ' +
- 'increase limit');
- w.name = 'MaxListenersExceededWarning';
- w.emitter = target;
- w.type = type;
- w.count = existing.length;
- process.emitWarning(w);
- }
+ m = $getMaxListeners(target);
+ if (m > 0 && existing.length > m && !existing.warned) {
+ existing.warned = true;
+ // No error code for this since it is a Warning
+ // eslint-disable-next-line no-restricted-syntax
+ const w = new Error('Possible EventEmitter memory leak detected. ' +
+ `${existing.length} ${String(type)} listeners ` +
+ 'added. Use emitter.setMaxListeners() to ' +
+ 'increase limit');
+ w.name = 'MaxListenersExceededWarning';
+ w.emitter = target;
+ w.type = type;
+ w.count = existing.length;
+ process.emitWarning(w);
}
}