From 5e7dd69b000f762ce3659e5c615a648ede44bb52 Mon Sep 17 00:00:00 2001 From: Araq Date: Tue, 12 Feb 2013 08:28:46 +0100 Subject: GC: incRef needs to add cycleroots --- lib/system/gc.nim | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) (limited to 'lib/system') 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)) -- cgit 1.4.1-2-gfad0