Signed-off-by: Antoine du Hamel <duhamelantoine1995@gmail.com> PR-URL: https://github.com/nodejs/node/pull/63790 Reviewed-By: Filip Skokan <panva.ip@gmail.com> Reviewed-By: Chemi Atlow <chemi@atlow.co.il> Reviewed-By: Jake Yuesong Li <jake.yuesong@gmail.com> Reviewed-By: Marco Ippolito <marcoippolito54@gmail.com> Reviewed-By: Luigi Pinca <luigipinca@gmail.com> Reviewed-By: Trivikram Kamat <trivikr.dev@gmail.com> Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
57 lines
1.4 KiB
JavaScript
57 lines
1.4 KiB
JavaScript
'use strict';
|
|
|
|
const {
|
|
MathFloor,
|
|
} = primordials;
|
|
|
|
const { kEmptyObject } = require('internal/util');
|
|
const {
|
|
validateNumber,
|
|
validateObject,
|
|
} = require('internal/validators');
|
|
|
|
const kMicrosPerMilli = 1_000;
|
|
const kMaxSamplingIntervalUs = 0x7FFFFFFF;
|
|
const kMaxSamplingIntervalMs = kMaxSamplingIntervalUs / kMicrosPerMilli;
|
|
const kMaxSamplesUnlimited = 0xFFFF_FFFF;
|
|
|
|
function normalizeCpuProfileOptions(options = kEmptyObject) {
|
|
validateObject(options, 'options');
|
|
|
|
// TODO(ishabi): add support for 'mode' and 'filterContext' options
|
|
const {
|
|
sampleInterval,
|
|
maxBufferSize,
|
|
} = options;
|
|
|
|
let samplingIntervalMicros = 0;
|
|
if (sampleInterval !== undefined) {
|
|
validateNumber(sampleInterval,
|
|
'options.sampleInterval',
|
|
0,
|
|
kMaxSamplingIntervalMs);
|
|
samplingIntervalMicros = MathFloor(sampleInterval * kMicrosPerMilli);
|
|
if (sampleInterval > 0 && samplingIntervalMicros === 0) {
|
|
samplingIntervalMicros = 1;
|
|
}
|
|
}
|
|
|
|
const size = maxBufferSize;
|
|
let normalizedMaxSamples = kMaxSamplesUnlimited;
|
|
if (size !== undefined) {
|
|
validateNumber(size,
|
|
'options.maxBufferSize',
|
|
1,
|
|
kMaxSamplesUnlimited);
|
|
normalizedMaxSamples = MathFloor(size);
|
|
}
|
|
|
|
return {
|
|
samplingIntervalMicros,
|
|
maxSamples: normalizedMaxSamples,
|
|
};
|
|
}
|
|
|
|
module.exports = {
|
|
normalizeCpuProfileOptions,
|
|
};
|