diff options
author | Yuriy Glukhov <yuriy.glukhov@gmail.com> | 2016-10-05 20:36:22 +0300 |
---|---|---|
committer | Yuriy Glukhov <yuriy.glukhov@gmail.com> | 2016-10-05 20:36:22 +0300 |
commit | 1bfcea5d5c3f45fb467fdc9d69f644872b3e82f9 (patch) | |
tree | 14fd4d35388cb5a148fac1465c3931860c959594 /lib/system/gc2.nim | |
parent | 989f7949275808b102da54f3f4e399dbf8d83cfc (diff) | |
download | Nim-1bfcea5d5c3f45fb467fdc9d69f644872b3e82f9.tar.gz |
Make gc v2 compile with --threads:on
Diffstat (limited to 'lib/system/gc2.nim')
-rw-r--r-- | lib/system/gc2.nim | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/lib/system/gc2.nim b/lib/system/gc2.nim index 089c9c915..ce2bfc2ae 100644 --- a/lib/system/gc2.nim +++ b/lib/system/gc2.nim @@ -33,6 +33,9 @@ when withRealTime and not declared(getTicks): when defined(memProfiler): proc nimProfile(requestedSize: int) {.benign.} +when hasThreadSupport: + include sharedlist + type ObjectSpaceIter = object state: range[-1..0] @@ -96,7 +99,7 @@ type stat: GcStat additionalRoots: CellSeq # dummy roots for GC_ref/unref spaceIter: ObjectSpaceIter - dumpHeapFile: File # File that is used for GC_dumpHeap + pDumpHeapFile: pointer # File that is used for GC_dumpHeap when hasThreadSupport: toDispose: SharedList[pointer] @@ -612,6 +615,9 @@ template checkTime {.dirty.} = # ---------------- dump heap ---------------- +template dumpHeapFile(gch: var GcHeap): File = + cast[File](gch.pDumpHeapFile) + proc debugGraph(s: PCell) = c_fprintf(gch.dumpHeapFile, "child %p\n", s) @@ -625,7 +631,7 @@ proc GC_dumpHeap*(file: File) = ## Dumps the GCed heap's content to a file. Can be useful for ## debugging. Produces an undocumented text file format that ## can be translated into "dot" syntax via the "heapdump2dot" tool. - gch.dumpHeapFile = file + gch.pDumpHeapFile = file var spaceIter: ObjectSpaceIter var d = gch.decStack.d for i in 0 .. < gch.decStack.len: @@ -643,7 +649,7 @@ proc GC_dumpHeap*(file: File) = writeCell(file, "cell ", c) forAllChildren(c, waDebug) c_fprintf(file, "end\n") - gch.dumpHeapFile = nil + gch.pDumpHeapFile = nil proc GC_dumpHeap() = var f: File |