diff --git a/test/es-module/test-vm-source-text-module-leak.js b/test/es-module/test-vm-source-text-module-leak.js index d05e812ac32c95..6e770f897528b4 100644 --- a/test/es-module/test-vm-source-text-module-leak.js +++ b/test/es-module/test-vm-source-text-module-leak.js @@ -1,21 +1,24 @@ -// Flags: --experimental-vm-modules --max-old-space-size=16 --trace-gc +// Flags: --expose-internals --experimental-vm-modules --max-old-space-size=16 --trace-gc 'use strict'; // This tests that vm.SourceTextModule() does not leak. // See: https://github.com/nodejs/node/issues/33439 -require('../common'); -const { checkIfCollectable } = require('../common/gc'); +const common = require('../common'); +const { checkIfCollectableByCounting } = require('../common/gc'); const vm = require('vm'); -async function createSourceTextModule() { - // Try to reach the maximum old space size. - const m = new vm.SourceTextModule(` - const bar = new Array(512).fill("----"); - export { bar }; - `); - await m.link(() => {}); - await m.evaluate(); - return m; -} +const outer = 32; +const inner = 128; -checkIfCollectable(createSourceTextModule, 4096, 1024); +checkIfCollectableByCounting(async (i) => { + for (let j = 0; j < inner; j++) { + // Try to reach the maximum old space size. + const m = new vm.SourceTextModule(` + const bar = new Array(512).fill("----"); + export { bar }; + `); + await m.link(() => {}); + await m.evaluate(); + } + return inner; +}, vm.SourceTextModule, outer).then(common.mustCall());