summaryrefslogtreecommitdiff
path: root/lib/perf_hooks.js
diff options
context:
space:
mode:
authorJoyee Cheung <joyeec9h3@gmail.com>2019-03-19 18:17:49 +0800
committerRuben Bridgewater <ruben@bridgewater.de>2019-03-22 00:41:09 +0100
commit245c96e7e5c86260833a6fcfaaa013cdbb5ccf71 (patch)
treee01b04f7710a91f9fc40bbe02fab1e3312b6374c /lib/perf_hooks.js
parentd81ea10f662c6fb4b8fcee93eea4a9ded3abc608 (diff)
downloadandroid-node-v8-245c96e7e5c86260833a6fcfaaa013cdbb5ccf71.tar.gz
android-node-v8-245c96e7e5c86260833a6fcfaaa013cdbb5ccf71.tar.bz2
android-node-v8-245c96e7e5c86260833a6fcfaaa013cdbb5ccf71.zip
perf_hooks: load internal/errors eagerly
Since `internal/errors` is loaded by many builtin modules and is currently the first module loaded during bootstrap, it is fine to load it eagerly. We just need to make sure that `internal/errors` itself load other modules lazily. PR-URL: https://github.com/nodejs/node/pull/26771 Reviewed-By: Yongsheng Zhang <zyszys98@gmail.com> Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de>
Diffstat (limited to 'lib/perf_hooks.js')
-rw-r--r--lib/perf_hooks.js52
1 files changed, 22 insertions, 30 deletions
diff --git a/lib/perf_hooks.js b/lib/perf_hooks.js
index b1d634bf3c..cb92265efc 100644
--- a/lib/perf_hooks.js
+++ b/lib/perf_hooks.js
@@ -36,6 +36,15 @@ const { AsyncResource } = require('async_hooks');
const L = require('internal/linkedlist');
const kInspect = require('internal/util').customInspectSymbol;
+const {
+ ERR_INVALID_CALLBACK,
+ ERR_INVALID_ARG_VALUE,
+ ERR_INVALID_ARG_TYPE,
+ ERR_INVALID_OPT_VALUE,
+ ERR_VALID_PERFORMANCE_ENTRY_TYPE,
+ ERR_INVALID_PERFORMANCE_MARK
+} = require('internal/errors').codes;
+
const kHandle = Symbol('handle');
const kMap = Symbol('map');
const kCallback = Symbol('callback');
@@ -125,14 +134,6 @@ function collectHttp2Stats(entry) {
}
}
-
-let errors;
-function lazyErrors() {
- if (errors === undefined)
- errors = require('internal/errors').codes;
- return errors;
-}
-
function now() {
const hr = process.hrtime();
return hr[0] * 1000 + hr[1] / 1e6;
@@ -282,8 +283,7 @@ let gcTrackingIsEnabled = false;
class PerformanceObserver extends AsyncResource {
constructor(callback) {
if (typeof callback !== 'function') {
- const errors = lazyErrors();
- throw new errors.ERR_INVALID_CALLBACK();
+ throw new ERR_INVALID_CALLBACK();
}
super('PerformanceObserver');
Object.defineProperties(this, {
@@ -329,16 +329,15 @@ class PerformanceObserver extends AsyncResource {
}
observe(options) {
- const errors = lazyErrors();
if (typeof options !== 'object' || options == null) {
- throw new errors.ERR_INVALID_ARG_TYPE('options', 'Object', options);
+ throw new ERR_INVALID_ARG_TYPE('options', 'Object', options);
}
if (!Array.isArray(options.entryTypes)) {
- throw new errors.ERR_INVALID_OPT_VALUE('entryTypes', options);
+ throw new ERR_INVALID_OPT_VALUE('entryTypes', options);
}
const entryTypes = options.entryTypes.filter(filterTypes).map(mapTypes);
if (entryTypes.length === 0) {
- throw new errors.ERR_VALID_PERFORMANCE_ENTRY_TYPE();
+ throw new ERR_VALID_PERFORMANCE_ENTRY_TYPE();
}
if (entryTypes.includes(NODE_PERFORMANCE_ENTRY_TYPE_GC) &&
!gcTrackingIsEnabled) {
@@ -391,8 +390,7 @@ class Performance {
startMark = startMark !== undefined ? `${startMark}` : '';
const marks = this[kIndex][kMarks];
if (!marks.has(endMark) && !(endMark in nodeTiming)) {
- const errors = lazyErrors();
- throw new errors.ERR_INVALID_PERFORMANCE_MARK(endMark);
+ throw new ERR_INVALID_PERFORMANCE_MARK(endMark);
}
_measure(name, startMark, endMark);
}
@@ -410,8 +408,7 @@ class Performance {
timerify(fn) {
if (typeof fn !== 'function') {
- const errors = lazyErrors();
- throw new errors.ERR_INVALID_ARG_TYPE('fn', 'Function', fn);
+ throw new ERR_INVALID_ARG_TYPE('fn', 'Function', fn);
}
if (fn[kTimerified])
return fn[kTimerified];
@@ -565,13 +562,11 @@ class ELDHistogram {
get stddev() { return this[kHandle].stddev(); }
percentile(percentile) {
if (typeof percentile !== 'number') {
- const errors = lazyErrors();
- throw new errors.ERR_INVALID_ARG_TYPE('percentile', 'number', percentile);
+ throw new ERR_INVALID_ARG_TYPE('percentile', 'number', percentile);
}
if (percentile <= 0 || percentile > 100) {
- const errors = lazyErrors();
- throw new errors.ERR_INVALID_ARG_VALUE.RangeError('percentile',
- percentile);
+ throw new ERR_INVALID_ARG_VALUE.RangeError('percentile',
+ percentile);
}
return this[kHandle].percentile(percentile);
}
@@ -595,18 +590,15 @@ class ELDHistogram {
function monitorEventLoopDelay(options = {}) {
if (typeof options !== 'object' || options === null) {
- const errors = lazyErrors();
- throw new errors.ERR_INVALID_ARG_TYPE('options', 'Object', options);
+ throw new ERR_INVALID_ARG_TYPE('options', 'Object', options);
}
const { resolution = 10 } = options;
if (typeof resolution !== 'number') {
- const errors = lazyErrors();
- throw new errors.ERR_INVALID_ARG_TYPE('options.resolution',
- 'number', resolution);
+ throw new ERR_INVALID_ARG_TYPE('options.resolution',
+ 'number', resolution);
}
if (resolution <= 0 || !Number.isSafeInteger(resolution)) {
- const errors = lazyErrors();
- throw new errors.ERR_INVALID_OPT_VALUE.RangeError('resolution', resolution);
+ throw new ERR_INVALID_OPT_VALUE.RangeError('resolution', resolution);
}
return new ELDHistogram(new _ELDHistogram(resolution));
}