node/lib/internal/v8/heap_profile.js
Antoine du Hamel 1778eeb6e4
lib: add lint rule to enforce use of kEmptyObject
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>
2026-06-10 10:56:56 +00:00

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,
};