summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorAraq <rumpf_a@web.de>2011-05-09 22:44:14 +0200
committerAraq <rumpf_a@web.de>2011-05-09 22:44:14 +0200
commitf94941964d8621c452082b47b5810f231edabfa3 (patch)
tree3fddaf168507c3346642446dd4c5bdfca4ad5551
parent5c9552437cd44726e6bb75e46a3e39d9eb445bf2 (diff)
downloadNim-f94941964d8621c452082b47b5810f231edabfa3.tar.gz
debug build works again; sorry
-rwxr-xr-xlib/system.nim20
-rwxr-xr-xlib/system/cgprocs.nim85
-rwxr-xr-xlib/system/excpt.nim2
-rwxr-xr-xlib/system/systhread.nim2
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: