Release address space to the OS at gencgc_release_granularity
[sbcl.git] / src / runtime / thread.c
index ee11e0f..ca265b8 100644 (file)
@@ -344,6 +344,12 @@ free_thread_struct(struct thread *th)
                   THREAD_STRUCT_SIZE);
 }
 
+#ifdef LISP_FEATURE_SB_THREAD
+/* FIXME: should be MAX_INTERRUPTS -1 ? */
+const unsigned int tls_index_start =
+  MAX_INTERRUPTS + sizeof(struct thread)/sizeof(lispobj);
+#endif
+
 /* this is called from any other thread to create the new one, and
  * initialize all parts of it that can be initialized from another
  * thread
@@ -387,12 +393,7 @@ create_thread_struct(lispobj initial_function) {
         per_thread->dynamic_values[i] = NO_TLS_VALUE_MARKER_WIDETAG;
     if (all_threads == 0) {
         if(SymbolValue(FREE_TLS_INDEX,0)==UNBOUND_MARKER_WIDETAG) {
-            SetSymbolValue
-                (FREE_TLS_INDEX,
-                 /* FIXME: should be MAX_INTERRUPTS -1 ? */
-                 make_fixnum(MAX_INTERRUPTS+
-                             sizeof(struct thread)/sizeof(lispobj)),
-                 0);
+            SetSymbolValue(FREE_TLS_INDEX,make_fixnum(tls_index_start),0);
             SetSymbolValue(TLS_INDEX_LOCK,make_fixnum(0),0);
         }
 #define STATIC_TLS_INIT(sym,field) \