diff options
author | Araq <rumpf_a@web.de> | 2018-11-15 15:15:20 +0100 |
---|---|---|
committer | Araq <rumpf_a@web.de> | 2018-11-15 15:15:20 +0100 |
commit | dd3e1cbc9bb1bf346a640451121dc52d4e8b98f3 (patch) | |
tree | 7a3a51177e71173d97455ac6562033ec501d584a | |
parent | 9a05fd9dcf212fc46167232a3714ca7c823a71b4 (diff) | |
download | Nim-dd3e1cbc9bb1bf346a640451121dc52d4e8b98f3.tar.gz |
make testament compile again with -d:nimCoroutines
-rw-r--r-- | lib/system/gc_common.nim | 42 |
1 files changed, 21 insertions, 21 deletions
diff --git a/lib/system/gc_common.nim b/lib/system/gc_common.nim index 66e0c8e1e..565453298 100644 --- a/lib/system/gc_common.nim +++ b/lib/system/gc_common.nim @@ -157,27 +157,6 @@ else: iterator items(first: var GcStack): ptr GcStack = yield addr(first) proc len(stack: var GcStack): int = 1 -when nimCoroutines: - proc setPosition(stack: ptr GcStack, position: pointer) = - stack.pos = position - stack.maxStackSize = max(stack.maxStackSize, stack.stackSize()) - - proc setPosition(stack: var GcStack, position: pointer) = - setPosition(addr(stack), position) - - proc getActiveStack(gch: var GcHeap): ptr GcStack = - return gch.activeStack - - proc isActiveStack(stack: ptr GcStack): bool = - return gch.activeStack == stack -else: - # Stack positions do not need to be tracked if coroutines are not used. - proc setPosition(stack: ptr GcStack, position: pointer) = discard - proc setPosition(stack: var GcStack, position: pointer) = discard - # There is just one stack - main stack of the thread. It is active always. - proc getActiveStack(gch: var GcHeap): ptr GcStack = addr(gch.stack) - proc isActiveStack(stack: ptr GcStack): bool = true - when declared(threadType): proc setupForeignThreadGc*() {.gcsafe.} = ## Call this if you registered a callback that will be run from a thread not @@ -246,6 +225,27 @@ proc stackSize(): int {.noinline.} = for stack in gch.stack.items(): result = result + stack.stackSize() +when nimCoroutines: + proc setPosition(stack: ptr GcStack, position: pointer) = + stack.pos = position + stack.maxStackSize = max(stack.maxStackSize, stack.stackSize()) + + proc setPosition(stack: var GcStack, position: pointer) = + setPosition(addr(stack), position) + + proc getActiveStack(gch: var GcHeap): ptr GcStack = + return gch.activeStack + + proc isActiveStack(stack: ptr GcStack): bool = + return gch.activeStack == stack +else: + # Stack positions do not need to be tracked if coroutines are not used. + proc setPosition(stack: ptr GcStack, position: pointer) = discard + proc setPosition(stack: var GcStack, position: pointer) = discard + # There is just one stack - main stack of the thread. It is active always. + proc getActiveStack(gch: var GcHeap): ptr GcStack = addr(gch.stack) + proc isActiveStack(stack: ptr GcStack): bool = true + {.push stack_trace: off.} when nimCoroutines: proc GC_addStack(bottom: pointer) {.cdecl, exportc.} = |