summary refs log tree commit diff stats
path: root/tests/gc/gcleak.nim
diff options
context:
space:
mode:
Diffstat (limited to 'tests/gc/gcleak.nim')
-rw-r--r--[-rwxr-xr-x]tests/gc/gcleak.nim21
1 files changed, 16 insertions, 5 deletions
diff --git a/tests/gc/gcleak.nim b/tests/gc/gcleak.nim
index ab85409ee..0bf993968 100755..100644
--- a/tests/gc/gcleak.nim
+++ b/tests/gc/gcleak.nim
@@ -2,17 +2,28 @@ discard """
   outputsub: "no leak: "
 """
 
+when defined(GC_setMaxPause):
+  GC_setMaxPause 2_000
+
 type
-  TTestObj = object of TObject
+  TTestObj = object of RootObj
     x: string
 
-proc MakeObj(): TTestObj =
+proc makeObj(): TTestObj =
   result.x = "Hello"
 
-for i in 1 .. 100_000_000:
-  var obj = MakeObj()
+const numIter =
+  # see tests/gc/gcleak2.nim
+  when defined(boehmgc):
+    1_000
+  elif defined(gcMarkAndSweep): 10_000
+  else: 100_000
+
+for i in 1 .. numIter:
+  when defined(gcMarkAndSweep) or defined(boehmgc):
+    GC_fullcollect()
+  var obj = makeObj()
   if getOccupiedMem() > 300_000: quit("still a leak!")
 #  echo GC_getstatistics()
 
 echo "no leak: ", getOccupiedMem()
-