diff --git a/test/pummel/test-heapdump-shadow-realm.js b/test/pummel/test-heapdump-shadow-realm.js index 76bd425e1c8674..7ec40118c5b9ca 100644 --- a/test/pummel/test-heapdump-shadow-realm.js +++ b/test/pummel/test-heapdump-shadow-realm.js @@ -4,29 +4,39 @@ require('../common'); const { validateSnapshotNodes } = require('../common/heap'); validateSnapshotNodes('Node / ShadowRealm', []); -const realm = new ShadowRealm(); -{ - // Create a bunch of un-referenced ShadowRealms to make sure the heap - // snapshot can handle it. - for (let i = 0; i < 100; i++) { - const realm = new ShadowRealm(); + +let realm; +let counter = 0; +// Create a bunch of un-referenced ShadowRealms to make sure the heap +// snapshot can handle it. +function createRealms() { + // Use setImmediate to give GC some time to kick in to avoid OOM. + if (counter++ < 100) { + realm = new ShadowRealm(); + realm.evaluate('undefined'); + setImmediate(createRealms); + } else { + validateHeap(); + // Keep the realm alive. realm.evaluate('undefined'); } } -validateSnapshotNodes('Node / Environment', [ - { - children: [ - { node_name: 'Node / shadow_realms', edge_name: 'shadow_realms' }, - ], - }, -]); -validateSnapshotNodes('Node / shadow_realms', [ - { - children: [ - { node_name: 'Node / ShadowRealm' }, - ], - }, -]); -// Keep the realm alive. -realm.evaluate('undefined'); +function validateHeap() { + validateSnapshotNodes('Node / Environment', [ + { + children: [ + { node_name: 'Node / shadow_realms', edge_name: 'shadow_realms' }, + ], + }, + ]); + validateSnapshotNodes('Node / shadow_realms', [ + { + children: [ + { node_name: 'Node / ShadowRealm' }, + ], + }, + ]); +} + +createRealms();