diff options
Diffstat (limited to 'test/bun.js/gc.ts')
-rw-r--r-- | test/bun.js/gc.ts | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/test/bun.js/gc.ts b/test/bun.js/gc.ts new file mode 100644 index 000000000..b9d80116d --- /dev/null +++ b/test/bun.js/gc.ts @@ -0,0 +1,26 @@ +export function gc(force: boolean = true) { + Bun.gc(force); +} + +// we must ensure that finalizers are run +// so that the reference-counting logic is exercised +export function gcTick(trace = false) { + trace && console.trace(""); + // console.trace("hello"); + gc(); + return new Promise(resolve => { + setTimeout(resolve, 0); + }); +} + +export function withoutAggressiveGC(block) { + if (!Bun.unsafe.gcAggressionLevel) return block(); + + const origGC = Bun.unsafe.gcAggressionLevel(); + Bun.unsafe.gcAggressionLevel(0); + try { + return block(); + } finally { + Bun.unsafe.gcAggressionLevel(origGC); + } +} |