diff options
author | Araq <rumpf_a@web.de> | 2011-05-09 22:44:14 +0200 |
---|---|---|
committer | Araq <rumpf_a@web.de> | 2011-05-09 22:44:14 +0200 |
commit | f94941964d8621c452082b47b5810f231edabfa3 (patch) | |
tree | 3fddaf168507c3346642446dd4c5bdfca4ad5551 | |
parent | 5c9552437cd44726e6bb75e46a3e39d9eb445bf2 (diff) | |
download | Nim-f94941964d8621c452082b47b5810f231edabfa3.tar.gz |
debug build works again; sorry
-rwxr-xr-x | lib/system.nim | 20 | ||||
-rwxr-xr-x | lib/system/cgprocs.nim | 85 | ||||
-rwxr-xr-x | lib/system/excpt.nim | 2 | ||||
-rwxr-xr-x | lib/system/systhread.nim | 2 |
4 files changed, 55 insertions, 54 deletions
diff --git a/lib/system.nim b/lib/system.nim index 05e934d01..fb43930be 100755 --- a/lib/system.nim +++ b/lib/system.nim @@ -44,6 +44,10 @@ type typeDesc* {.magic: TypeDesc.} ## meta type to denote ## a type description (for templates) +const + hasThreadSupport = false # deactivate for now: thread stack walking + # is missing! + proc defined*[T](x: T): bool {.magic: "Defined", noSideEffect.} ## Special compile-time procedure that checks whether `x` is ## defined. `x` has to be an identifier or a qualified identifier. @@ -779,14 +783,6 @@ proc compileOption*(option, arg: string): bool {. include "system/inclrtl" when not defined(ecmascript) and not defined(nimrodVm): - - proc atomicInc*(memLoc: var int, x: int): int {.inline.} - ## atomic increment of `memLoc`. Returns the value after the operation. - - proc atomicDec*(memLoc: var int, x: int): int {.inline.} - ## atomic decrement of `memLoc`. Returns the value after the operation. - - include "system/systhread" include "system/cgprocs" proc add *[T](x: var seq[T], y: T) {.magic: "AppendSeqElem", noSideEffect.} @@ -1444,6 +1440,12 @@ proc quit*(errorcode: int = QuitSuccess) {. when not defined(EcmaScript) and not defined(NimrodVM): + proc atomicInc*(memLoc: var int, x: int): int {.inline.} + ## atomic increment of `memLoc`. Returns the value after the operation. + + proc atomicDec*(memLoc: var int, x: int): int {.inline.} + ## atomic decrement of `memLoc`. Returns the value after the operation. + proc initGC() proc initStackBottom() {.inline.} = @@ -1709,7 +1711,7 @@ when not defined(EcmaScript) and not defined(NimrodVM): else: result = n.sons[n.len] - #include "system/systhread" + include "system/systhread" include "system/mmdisp" include "system/sysstr" include "system/assign" diff --git a/lib/system/cgprocs.nim b/lib/system/cgprocs.nim index 3bc3176a8..8509fe3a3 100755 --- a/lib/system/cgprocs.nim +++ b/lib/system/cgprocs.nim @@ -23,49 +23,50 @@ proc nimLoadLibraryError(path: string) {.compilerproc, noinline.} proc setStackBottom(theStackBottom: pointer) {.compilerRtl, noinline.} -# Support for thread local storage: -when defined(windows): - type - TThreadVarSlot {.compilerproc.} = distinct int32 +when false: + # Support for thread local storage: + when defined(windows): + type + TThreadVarSlot {.compilerproc.} = distinct int32 - proc TlsAlloc(): TThreadVarSlot {. - importc: "TlsAlloc", stdcall, dynlib: "kernel32".} - proc TlsSetValue(dwTlsIndex: TThreadVarSlot, lpTlsValue: pointer) {. - importc: "TlsSetValue", stdcall, dynlib: "kernel32".} - proc TlsGetValue(dwTlsIndex: TThreadVarSlot): pointer {. - importc: "TlsGetValue", stdcall, dynlib: "kernel32".} - - proc ThreadVarAlloc(): TThreadVarSlot {.compilerproc, inline.} = - result = TlsAlloc() - proc ThreadVarSetValue(s: TThreadVarSlot, value: pointer) {. - compilerproc, inline.} = - TlsSetValue(s, value) - proc ThreadVarGetValue(s: TThreadVarSlot): pointer {. - compilerproc, inline.} = - result = TlsGetValue(s) - -else: - type - Tpthread_key {.importc: "pthread_key_t", - header: "<sys/types.h>".} = distinct int - TThreadVarSlot {.compilerproc.} = Tpthread_key + proc TlsAlloc(): TThreadVarSlot {. + importc: "TlsAlloc", stdcall, dynlib: "kernel32".} + proc TlsSetValue(dwTlsIndex: TThreadVarSlot, lpTlsValue: pointer) {. + importc: "TlsSetValue", stdcall, dynlib: "kernel32".} + proc TlsGetValue(dwTlsIndex: TThreadVarSlot): pointer {. + importc: "TlsGetValue", stdcall, dynlib: "kernel32".} + + proc ThreadVarAlloc(): TThreadVarSlot {.compilerproc, inline.} = + result = TlsAlloc() + proc ThreadVarSetValue(s: TThreadVarSlot, value: pointer) {. + compilerproc, inline.} = + TlsSetValue(s, value) + proc ThreadVarGetValue(s: TThreadVarSlot): pointer {. + compilerproc, inline.} = + result = TlsGetValue(s) + + else: + type + Tpthread_key {.importc: "pthread_key_t", + header: "<sys/types.h>".} = distinct int + TThreadVarSlot {.compilerproc.} = Tpthread_key - proc pthread_getspecific(a1: Tpthread_key): pointer {. - importc: "pthread_getspecific", header: "<pthread.h>".} - proc pthread_key_create(a1: ptr Tpthread_key, - destruct: proc (x: pointer) {.noconv.}): int32 {. - importc: "pthread_key_create", header: "<pthread.h>".} - proc pthread_key_delete(a1: Tpthread_key): int32 {. - importc: "pthread_key_delete", header: "<pthread.h>".} + proc pthread_getspecific(a1: Tpthread_key): pointer {. + importc: "pthread_getspecific", header: "<pthread.h>".} + proc pthread_key_create(a1: ptr Tpthread_key, + destruct: proc (x: pointer) {.noconv.}): int32 {. + importc: "pthread_key_create", header: "<pthread.h>".} + proc pthread_key_delete(a1: Tpthread_key): int32 {. + importc: "pthread_key_delete", header: "<pthread.h>".} - proc pthread_setspecific(a1: Tpthread_key, a2: pointer): int32 {. - importc: "pthread_setspecific", header: "<pthread.h>".} - - proc ThreadVarAlloc(): TThreadVarSlot {.compilerproc, inline.} = - discard pthread_key_create(addr(result), nil) - proc ThreadVarSetValue(s: TThreadVarSlot, value: pointer) {. - compilerproc, inline.} = - discard pthread_setspecific(s, value) - proc ThreadVarGetValue(s: TThreadVarSlot): pointer {.compilerproc, inline.} = - result = pthread_getspecific(s) + proc pthread_setspecific(a1: Tpthread_key, a2: pointer): int32 {. + importc: "pthread_setspecific", header: "<pthread.h>".} + + proc ThreadVarAlloc(): TThreadVarSlot {.compilerproc, inline.} = + discard pthread_key_create(addr(result), nil) + proc ThreadVarSetValue(s: TThreadVarSlot, value: pointer) {. + compilerproc, inline.} = + discard pthread_setspecific(s, value) + proc ThreadVarGetValue(s: TThreadVarSlot): pointer {.compilerproc, inline.} = + result = pthread_getspecific(s) diff --git a/lib/system/excpt.nim b/lib/system/excpt.nim index 1a9816aed..ed2ec7ff0 100755 --- a/lib/system/excpt.nim +++ b/lib/system/excpt.nim @@ -39,7 +39,7 @@ type exc: ref E_Base # XXX only needed for bootstrapping; unused context: C_JmpBuf -when hasThreadSupport: nil +#when hasThreadSupport: nil var excHandler {.threadvar, compilerproc.}: PSafePoint = nil diff --git a/lib/system/systhread.nim b/lib/system/systhread.nim index 0ffc9605c..fa2d75704 100755 --- a/lib/system/systhread.nim +++ b/lib/system/systhread.nim @@ -8,8 +8,6 @@ # const - hasThreadSupport = false # deactivate for now: thread stack walking - # is missing! maxThreads = 256 when (defined(gcc) or defined(llvm_gcc)) and hasThreadSupport: |