GC: fixes size computation for leak detection
This commit is contained in:
parent
81195fc362
commit
5f603144b2
1 changed files with 4 additions and 4 deletions
|
|
@ -47,7 +47,7 @@ when defined(nimTypeNames):
|
||||||
var n = 0
|
var n = 0
|
||||||
var it = nimTypeRoot
|
var it = nimTypeRoot
|
||||||
while it != nil:
|
while it != nil:
|
||||||
if it.instances > 0 and n < a.len:
|
if (it.instances > 0 or it.sizes != 0) and n < a.len:
|
||||||
a[n] = (it.name, it.instances, it.sizes)
|
a[n] = (it.name, it.instances, it.sizes)
|
||||||
inc n
|
inc n
|
||||||
it = it.nextType
|
it = it.nextType
|
||||||
|
|
@ -67,9 +67,9 @@ template decTypeSize(cell, t) =
|
||||||
# XXX this needs to use atomics for multithreaded apps!
|
# XXX this needs to use atomics for multithreaded apps!
|
||||||
when defined(nimTypeNames):
|
when defined(nimTypeNames):
|
||||||
if t.kind in {tyString, tySequence}:
|
if t.kind in {tyString, tySequence}:
|
||||||
let len = cast[PGenericSeq](cellToUsr(cell)).len
|
let cap = cast[PGenericSeq](cellToUsr(cell)).space
|
||||||
let base = if t.kind == tyString: 1 else: t.base.size
|
let size = if t.kind == tyString: cap+1+GenericSeqSize
|
||||||
let size = addInt(mulInt(len, base), GenericSeqSize)
|
else: addInt(mulInt(cap, t.base.size), GenericSeqSize)
|
||||||
dec t.sizes, size+sizeof(Cell)
|
dec t.sizes, size+sizeof(Cell)
|
||||||
else:
|
else:
|
||||||
dec t.sizes, t.base.size+sizeof(Cell)
|
dec t.sizes, t.base.size+sizeof(Cell)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue