diff options
-rw-r--r-- | lib/system/gc.nim | 10 | ||||
-rwxr-xr-x | todo.txt | 1 |
2 files changed, 5 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)) diff --git a/todo.txt b/todo.txt index a6ae409bd..ad4328613 100755 --- a/todo.txt +++ b/todo.txt @@ -1,6 +1,7 @@ version 0.9.2 ============= +- acyclic vs prunable; introduce GC hints - implement constructors + full 'not nil' checking - ``restrict`` pragma + backend support - fix: 'result' is not properly cleaned for NRVO |