summary refs log tree commit diff stats
path: root/lib/system/refs_v2.nim
diff options
context:
space:
mode:
Diffstat (limited to 'lib/system/refs_v2.nim')
-rw-r--r--lib/system/refs_v2.nim4
1 files changed, 4 insertions, 0 deletions
diff --git a/lib/system/refs_v2.nim b/lib/system/refs_v2.nim
index 3033880c3..6fd34fca6 100644
--- a/lib/system/refs_v2.nim
+++ b/lib/system/refs_v2.nim
@@ -67,6 +67,8 @@ proc nimNewObj(size: int): pointer {.compilerRtl.} =
     var orig = c_malloc(cuint s)
     nimZeroMem(orig, s)
     result = orig +! sizeof(RefHeader)
+  elif compileOption("threads"):
+    result = allocShared0(s) +! sizeof(RefHeader)
   else:
     result = alloc0(s) +! sizeof(RefHeader)
   when hasThreadSupport:
@@ -93,6 +95,8 @@ proc nimRawDispose(p: pointer) {.compilerRtl.} =
         quit 1
     when defined(useMalloc):
       c_free(p -! sizeof(RefHeader))
+    elif compileOption("threads"):
+      deallocShared(p -! sizeof(RefHeader))
     else:
       dealloc(p -! sizeof(RefHeader))
     if allocs > 0: