summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--lib/system/alloc.nim16
1 files changed, 10 insertions, 6 deletions
diff --git a/lib/system/alloc.nim b/lib/system/alloc.nim
index 441dc1719..cc4a24d8f 100644
--- a/lib/system/alloc.nim
+++ b/lib/system/alloc.nim
@@ -789,13 +789,13 @@ when defined(gcDestructors):
     # Well, not for the entire list, but for `max` elements of the list because
     # we split the list in order to achieve bounded response times.
     var it = c.freeList
-    var x = 0
+    var total = 0
     while it != nil:
-      inc x, size
+      inc total, size
       let chunk = cast[PSmallChunk](pageAddr(it))
-      inc(chunk.free, x)
+      inc(chunk.free, size)
       it = it.next
-    dec(a.occ, x)
+    dec(a.occ, total)
 
   proc freeDeferredObjects(a: var MemRegion; root: PBigChunk) =
     var it = root
@@ -904,7 +904,7 @@ proc rawAlloc(a: var MemRegion, requestedSize: int): pointer =
     trackSize(c.size)
   sysAssert(isAccessible(a, result), "rawAlloc 14")
   sysAssert(allocInv(a), "rawAlloc: end")
-  when logAlloc: cprintf("var pointer_%p = alloc(%ld)\n", result, requestedSize)
+  when logAlloc: cprintf("var pointer_%p = alloc(%ld) # %p\n", result, requestedSize, addr a)
 
 proc rawAlloc0(a: var MemRegion, requestedSize: int): pointer =
   result = rawAlloc(a, requestedSize)
@@ -953,6 +953,8 @@ proc rawDealloc(a: var MemRegion, p: pointer) =
           c.size = SmallChunkSize
           freeBigChunk(a, cast[PBigChunk](c))
     else:
+      when logAlloc: cprintf("dealloc(pointer_%p) # SMALL FROM %p CALLER %p\n", p, c.owner, addr(a))
+
       when defined(gcDestructors):
         addToSharedFreeList(c, f, s div MemAlign)
     sysAssert(((cast[int](p) and PageMask) - smallChunkOverhead()) %%
@@ -960,6 +962,7 @@ proc rawDealloc(a: var MemRegion, p: pointer) =
   else:
     # set to 0xff to check for usage after free bugs:
     when overwriteFree: nimSetMem(p, -1'i32, c.size -% bigChunkOverhead())
+    when logAlloc: cprintf("dealloc(pointer_%p) # BIG %p\n", p, c.owner)
     when defined(gcDestructors):
       if c.owner == addr(a):
         deallocBigChunk(a, cast[PBigChunk](c))
@@ -967,8 +970,9 @@ proc rawDealloc(a: var MemRegion, p: pointer) =
         addToSharedFreeListBigChunks(c.owner[], cast[PBigChunk](c))
     else:
       deallocBigChunk(a, cast[PBigChunk](c))
+
   sysAssert(allocInv(a), "rawDealloc: end")
-  when logAlloc: cprintf("dealloc(pointer_%p)\n", p)
+  #when logAlloc: cprintf("dealloc(pointer_%p)\n", p)
 
 when not defined(gcDestructors):
   proc isAllocatedPtr(a: MemRegion, p: pointer): bool =