diff options
author | Yuriy Glukhov <yglukhov@users.noreply.github.com> | 2018-06-04 12:12:18 +0300 |
---|---|---|
committer | Andreas Rumpf <rumpf_a@web.de> | 2018-06-04 11:12:18 +0200 |
commit | 395b7506cf62cb86f34430c1a034a127ce2ad392 (patch) | |
tree | 950eb7ec6e7e3b2b7bb06d80f640d11cf32d7a9c /lib/system.nim | |
parent | 4a88c245d361700c5a4ee63e51b032203ed87e39 (diff) | |
download | Nim-395b7506cf62cb86f34430c1a034a127ce2ad392.tar.gz |
Expose GC_setStackBottom (#7885)
Diffstat (limited to 'lib/system.nim')
-rw-r--r-- | lib/system.nim | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/lib/system.nim b/lib/system.nim index 13f16903a..b8aa170ea 100644 --- a/lib/system.nim +++ b/lib/system.nim @@ -1523,7 +1523,6 @@ const hasAlloc = (hostOS != "standalone" or not defined(nogc)) and not defined(n when not defined(JS) and not defined(nimscript) and hostOS != "standalone": include "system/cgprocs" when not defined(JS) and not defined(nimscript) and hasAlloc: - proc setStackBottom(theStackBottom: pointer) {.compilerRtl, noinline, benign.} proc addChar(s: NimString, c: char): NimString {.compilerProc, benign.} proc add *[T](x: var seq[T], y: T) {.magic: "AppendSeqElem", noSideEffect.} @@ -2639,6 +2638,11 @@ when not defined(nimscript) and hasAlloc: proc GC_unref*(x: string) {.magic: "GCunref", benign.} ## see the documentation of `GC_ref`. + when not defined(JS) and not defined(nimscript) and hasAlloc: + proc nimGC_setStackBottom*(theStackBottom: pointer) {.compilerRtl, noinline, benign.} + ## Expands operating GC stack range to `theStackBottom`. Does nothing + ## if current stack bottom is already lower than `theStackBottom`. + else: template GC_disable* = {.warning: "GC_disable is a no-op in JavaScript".} @@ -2898,16 +2902,16 @@ when not defined(JS): #and not defined(nimscript): # WARNING: This is very fragile! An array size of 8 does not work on my # Linux 64bit system. -- That's because the stack direction is the other # way round. - when declared(setStackBottom): + when declared(nimGC_setStackBottom): var locals {.volatile.}: pointer locals = addr(locals) - setStackBottom(locals) + nimGC_setStackBottom(locals) proc initStackBottomWith(locals: pointer) {.inline, compilerproc.} = # We need to keep initStackBottom around for now to avoid # bootstrapping problems. - when declared(setStackBottom): - setStackBottom(locals) + when declared(nimGC_setStackBottom): + nimGC_setStackBottom(locals) {.push profiler: off.} var |