From bc179ccc3f3c0df8b0c725b477c7cfeefaef4594 Mon Sep 17 00:00:00 2001 From: Andreas Rumpf Date: Tue, 15 Sep 2020 12:40:23 +0200 Subject: fixes #15076 (#15329) --- lib/system/orc.nim | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) (limited to 'lib') diff --git a/lib/system/orc.nim b/lib/system/orc.nim index 7c4cf9d98..7500ba374 100644 --- a/lib/system/orc.nim +++ b/lib/system/orc.nim @@ -40,7 +40,7 @@ template setColor(c, col) = proc nimIncRefCyclic(p: pointer) {.compilerRtl, inl.} = let h = head(p) inc h.rc, rcIncrement - h.setColor colPurple # mark as potential cycle! + #h.setColor colPurple # mark as potential cycle! const useJumpStack = false # for thavlak the jump stack doesn't improve the performance at all @@ -74,6 +74,19 @@ proc free(s: Cell; desc: PNimType) {.inline.} = if desc.disposeImpl != nil: cast[DisposeProc](desc.disposeImpl)(p) + + when false: + cstderr.rawWrite desc.name + cstderr.rawWrite " " + if desc.disposeImpl == nil: + cstderr.rawWrite "lacks dispose" + if desc.traceImpl != nil: + cstderr.rawWrite ", but has trace\n" + else: + cstderr.rawWrite ", and lacks trace\n" + else: + cstderr.rawWrite "has dispose!\n" + nimRawDispose(p) proc nimTraceRef(q: pointer; desc: PNimType; env: pointer) {.compilerRtl.} = @@ -342,8 +355,8 @@ proc nimDecRefIsLastCyclicDyn(p: pointer): bool {.compilerRtl, inl.} = #cprintf("[DESTROY] %p\n", p) else: dec cell.rc, rcIncrement - if cell.color == colPurple: - rememberCycle(result, cell, cast[ptr PNimType](p)[]) + #if cell.color == colPurple: + rememberCycle(result, cell, cast[ptr PNimType](p)[]) proc nimDecRefIsLastCyclicStatic(p: pointer; desc: PNimType): bool {.compilerRtl, inl.} = if p != nil: @@ -353,5 +366,5 @@ proc nimDecRefIsLastCyclicStatic(p: pointer; desc: PNimType): bool {.compilerRtl #cprintf("[DESTROY] %p %s\n", p, desc.name) else: dec cell.rc, rcIncrement - if cell.color == colPurple: - rememberCycle(result, cell, desc) + #if cell.color == colPurple: + rememberCycle(result, cell, desc) -- cgit 1.4.1-2-gfad0