diff options
author | Andreas Rumpf <rumpf_a@web.de> | 2020-09-15 12:40:23 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-09-15 12:40:23 +0200 |
commit | bc179ccc3f3c0df8b0c725b477c7cfeefaef4594 (patch) | |
tree | 82e2eecaa7367abb24ea33de041e1dd9abc8cc3f /lib | |
parent | 073bea66064afd72cd5e0ffc65569a1833dce385 (diff) | |
download | Nim-bc179ccc3f3c0df8b0c725b477c7cfeefaef4594.tar.gz |
fixes #15076 (#15329)
Diffstat (limited to 'lib')
-rw-r--r-- | lib/system/orc.nim | 23 |
1 files changed, 18 insertions, 5 deletions
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) |