diff options
Diffstat (limited to 'tests/gc/gcleak2.nim')
-rw-r--r--[-rwxr-xr-x] | tests/gc/gcleak2.nim | 29 |
1 files changed, 22 insertions, 7 deletions
diff --git a/tests/gc/gcleak2.nim b/tests/gc/gcleak2.nim index bd7962a7e..bc943dbe7 100755..100644 --- a/tests/gc/gcleak2.nim +++ b/tests/gc/gcleak2.nim @@ -2,22 +2,37 @@ discard """ outputsub: "no leak: " """ +when defined(GC_setMaxPause): + GC_setMaxPause 2_000 + type - TTestObj = object of TObject + TTestObj = object of RootObj x: string s: seq[int] -proc MakeObj(): TTestObj = +proc makeObj(): TTestObj = result.x = "Hello" result.s = @[1,2,3] -proc inProc() = - for i in 1 .. 100_000_000: +const numIter = + when defined(boehmgc): + # super slow because GC_fullcollect() at each iteration; especially + # on OSX 10.15 where it takes ~170s + # `getOccupiedMem` should be constant after each iteration for i >= 3 + 1_000 + elif defined(gcMarkAndSweep): + # likewise, somewhat slow, 1_000_000 would run for 8s + # and same remark as above + 100_000 + else: 1_000_000 + +proc inProc() = + for i in 1 .. numIter: + when defined(gcMarkAndSweep) or defined(boehmgc): + GC_fullcollect() var obj: TTestObj - obj = MakeObj() + obj = makeObj() if getOccupiedMem() > 300_000: quit("still a leak!") inProc() echo "no leak: ", getOccupiedMem() - - |