aboutsummaryrefslogtreecommitdiff
path: root/test/bun.js/gc.ts
diff options
context:
space:
mode:
Diffstat (limited to 'test/bun.js/gc.ts')
-rw-r--r--test/bun.js/gc.ts26
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);
+ }
+}