summary refs log tree commit diff stats
path: root/lib/system/gc.nim
diff options
context:
space:
mode:
Diffstat (limited to 'lib/system/gc.nim')
-rw-r--r--lib/system/gc.nim10
1 files changed, 4 insertions, 6 deletions
diff --git a/lib/system/gc.nim b/lib/system/gc.nim
index bd8c7a5da..33b82686f 100644
--- a/lib/system/gc.nim
+++ b/lib/system/gc.nim
@@ -18,9 +18,6 @@
 # for soft real time applications (like games).
 {.push profiler:off.}
 
-# XXX there is still a slight chance of leaking cycles as we don't add cycle
-# candidates in 'incRef'
-
 const
   CycleIncrease = 2 # is a multiplicative increase
   InitialCycleThreshold = 4*1024*1024 # X MB because cycle checking is slow
@@ -201,10 +198,11 @@ proc decRef(c: PCell) {.inline.} =
 
 proc incRef(c: PCell) {.inline.} = 
   gcAssert(isAllocatedPtr(gch.region, c), "incRef: interiorPtr")
-  c.refcount = c.refCount +% rcIncrement and not colorMask
+  c.refcount = c.refCount +% rcIncrement
+  # and not colorMask
   #writeCell("incRef", c)
-  #if canBeCycleRoot(c):
-  #  rtlAddCycleRoot(c)
+  if canBeCycleRoot(c):
+    rtlAddCycleRoot(c)
 
 proc nimGCref(p: pointer) {.compilerProc, inline.} = incRef(usrToCell(p))
 proc nimGCunref(p: pointer) {.compilerProc, inline.} = decRef(usrToCell(p))