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>
50 lines
1.4 KiB
JavaScript
50 lines
1.4 KiB
JavaScript
'use strict';
|
|
|
|
const { kEmptyObject } = require('internal/util');
|
|
const {
|
|
validateBoolean,
|
|
validateInteger,
|
|
validateInt32,
|
|
validateObject,
|
|
} = require('internal/validators');
|
|
|
|
const {
|
|
kSamplingNoFlags,
|
|
kSamplingForceGC,
|
|
kSamplingIncludeObjectsCollectedByMajorGC,
|
|
kSamplingIncludeObjectsCollectedByMinorGC,
|
|
} = internalBinding('v8');
|
|
|
|
function normalizeHeapProfileOptions(options = kEmptyObject) {
|
|
validateObject(options, 'options');
|
|
const {
|
|
sampleInterval = 512 * 1024,
|
|
stackDepth = 16,
|
|
forceGC = false,
|
|
includeObjectsCollectedByMajorGC = false,
|
|
includeObjectsCollectedByMinorGC = false,
|
|
} = options;
|
|
|
|
validateInteger(sampleInterval, 'options.sampleInterval', 1);
|
|
validateInt32(stackDepth, 'options.stackDepth', 0);
|
|
validateBoolean(forceGC, 'options.forceGC');
|
|
validateBoolean(includeObjectsCollectedByMajorGC,
|
|
'options.includeObjectsCollectedByMajorGC');
|
|
validateBoolean(includeObjectsCollectedByMinorGC,
|
|
'options.includeObjectsCollectedByMinorGC');
|
|
|
|
let flags = kSamplingNoFlags;
|
|
if (forceGC) flags |= kSamplingForceGC;
|
|
if (includeObjectsCollectedByMajorGC) {
|
|
flags |= kSamplingIncludeObjectsCollectedByMajorGC;
|
|
}
|
|
if (includeObjectsCollectedByMinorGC) {
|
|
flags |= kSamplingIncludeObjectsCollectedByMinorGC;
|
|
}
|
|
|
|
return { sampleInterval, stackDepth, flags };
|
|
}
|
|
|
|
module.exports = {
|
|
normalizeHeapProfileOptions,
|
|
};
|