diff options
author | Miran <narimiran@disroot.org> | 2019-03-27 11:17:44 +0100 |
---|---|---|
committer | Andreas Rumpf <rumpf_a@web.de> | 2019-03-27 11:17:44 +0100 |
commit | d74179dde32d1bdd4004aaadcc19c0e7bd4cb845 (patch) | |
tree | 064155a67e15ced7cb73d8d487b6a5b4a5d115e0 /lib/system/gc_common.nim | |
parent | 0378bfa40213d77e3c0fb5f35dcb11cadd42256c (diff) | |
download | Nim-d74179dde32d1bdd4004aaadcc19c0e7bd4cb845.tar.gz |
use atomicInc/atomicDec (#10906)
Diffstat (limited to 'lib/system/gc_common.nim')
-rw-r--r-- | lib/system/gc_common.nim | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/lib/system/gc_common.nim b/lib/system/gc_common.nim index 03cadaf90..ef4d379f6 100644 --- a/lib/system/gc_common.nim +++ b/lib/system/gc_common.nim @@ -75,21 +75,20 @@ when defined(nimTypeNames): outOfMemHook = oomhandler template decTypeSize(cell, t) = - # XXX this needs to use atomics for multithreaded apps! when defined(nimTypeNames): if t.kind in {tyString, tySequence}: let cap = cast[PGenericSeq](cellToUsr(cell)).space let size = if t.kind == tyString: cap+1+GenericSeqSize else: addInt(mulInt(cap, t.base.size), GenericSeqSize) - dec t.sizes, size+sizeof(Cell) + atomicDec t.sizes, size+sizeof(Cell) else: - dec t.sizes, t.base.size+sizeof(Cell) - dec t.instances + atomicDec t.sizes, t.base.size+sizeof(Cell) + atomicDec t.instances template incTypeSize(typ, size) = when defined(nimTypeNames): - inc typ.instances - inc typ.sizes, size+sizeof(Cell) + atomicInc typ.instances + atomicInc typ.sizes, size+sizeof(Cell) proc dispose*(x: ForeignCell) = when hasThreadSupport: |