summary refs log tree commit diff stats
path: root/tests/gc
diff options
context:
space:
mode:
authorAraq <rumpf_a@web.de>2013-02-10 15:06:25 +0100
committerAraq <rumpf_a@web.de>2013-02-10 15:06:25 +0100
commit3d7abb958de10df1fd630a24c01b5e259318b9c1 (patch)
treebda52b3073fe13ac58d314a7db4582dd326fee38 /tests/gc
parent0bb373142248f73dfdfc7e1112a4a2685b330136 (diff)
downloadNim-3d7abb958de10df1fd630a24c01b5e259318b9c1.tar.gz
open arrays documented in the manual
Diffstat (limited to 'tests/gc')
-rw-r--r--tests/gc/cycleleak.nim20
1 files changed, 17 insertions, 3 deletions
diff --git a/tests/gc/cycleleak.nim b/tests/gc/cycleleak.nim
index 0153d0f72..9f5c30ebd 100644
--- a/tests/gc/cycleleak.nim
+++ b/tests/gc/cycleleak.nim
@@ -5,37 +5,51 @@ discard """
 type
   Module = object
     nodes*: seq[PNode]
+    id: int
 
   PModule = ref Module
 
   Node = object
     owner*: PModule
     data*: array[0..200, char] # some fat to drain memory faster
+    id: int
 
   PNode = ref Node
 
+var
+  gid: int
+
+when false:
+  proc finalizeNode(x: PNode) =
+    echo "node id: ", x.id
+  proc finalizeModule(x: PModule) =
+    echo "module id: ", x.id
+
 proc newNode(owner: PModule): PNode =
   new(result)
   result.owner = owner
+  inc gid
+  result.id = gid
 
 proc compileModule: PModule =
   new(result)
   result.nodes = @[]
   for i in 0..100:
     result.nodes.add newNode(result)
+  inc gid
+  result.id = gid
 
 var gModuleCache: PModule
 
 proc loop =
-  for i in 0..10000:
+  for i in 0..1000:
     gModuleCache = compileModule()
     gModuleCache = nil
     GC_fullCollect()
 
-    if getOccupiedMem() > 900_000:
+    if getOccupiedMem() > 9_000_000:
       echo "still a leak! ", getOccupiedMem()
       quit(1)
-  
   echo "no leak: ", getOccupiedMem()
 
 loop()