From d74179dde32d1bdd4004aaadcc19c0e7bd4cb845 Mon Sep 17 00:00:00 2001 From: Miran Date: Wed, 27 Mar 2019 11:17:44 +0100 Subject: use atomicInc/atomicDec (#10906) --- lib/system/gc_common.nim | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) (limited to 'lib/system/gc_common.nim') 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: -- cgit 1.4.1-2-gfad0