]> git.eshelyaron.com Git - emacs.git/commitdiff
Initialize threads properly.
authorTom Tromey <tromey@redhat.com>
Tue, 6 Oct 2009 01:08:08 +0000 (03:08 +0200)
committerGiuseppe Scrivano <gscrivano@gnu.org>
Tue, 6 Oct 2009 01:08:08 +0000 (03:08 +0200)
Revert a few BUF_ changes to use direct field access.

src/buffer.c
src/emacs.c
src/marker.c
src/thread.c
src/thread.h

index e144a8bfaf25a4bad854092b6d09c4da37b20e17..939d28e621057449f5d725aa6c0507883cf1502a 100644 (file)
@@ -391,7 +391,7 @@ even if it is dead.  The return value is never nil.  */)
 
   b->newline_cache = 0;
   b->width_run_cache = 0;
-  BUF_WIDTH_TABLE (b) = Qnil;
+b->width_table_ = Qnil;
   b->prevent_redisplay_optimizations_p = 1;
 
   /* Put this on the chain of all buffers including killed ones.  */
@@ -400,22 +400,22 @@ even if it is dead.  The return value is never nil.  */)
 
   /* An ordinary buffer normally doesn't need markers
      to handle BEGV and ZV.  */
-  BUF_PT_MARKER (b) = Qnil;
-  BUF_BEGV_MARKER (b) = Qnil;
-  BUF_ZV_MARKER (b) = Qnil;
+  b->pt_marker_ = Qnil;
+  b->begv_marker_ = Qnil;
+  b->zv_marker_ = Qnil;
 
   name = Fcopy_sequence (buffer_or_name);
   STRING_SET_INTERVALS (name, NULL_INTERVAL);
-  BUF_NAME (b) = name;
+  b->name_ = name;
 
-  BUF_UNDO_LIST (b) = (SREF (name, 0) != ' ') ? Qnil : Qt;
+  b->undo_list_ = (SREF (name, 0) != ' ') ? Qnil : Qt;
 
   reset_buffer (b);
   reset_buffer_local_variables (b, 1);
 
-  BUF_MARK (b) = Fmake_marker ();
+  b->mark_ = Fmake_marker ();
   BUF_MARKERS (b) = NULL;
-  BUF_NAME (b) = name;
+  b->name_ = name;
   b->owner = Qnil;
   b->prev_owner = Qnil;
 
index f87c0a2f0acccb0bcf478f0936fa375e74e97a11..0ac070f8cd8f7bfef010f28462a2efcc7579a8e8 100644 (file)
@@ -1303,6 +1303,7 @@ main (int argc, char **argv)
     {
       init_alloc_once ();
       init_obarray ();
+      init_threads_once ();
       init_eval_once ();
       init_character_once ();
       init_charset_once ();
index 99a8fc4d52ab0de2cf306bd4ee8b6229444d2087..8ffe17fcc4e91f364783d93882c74f9181c5be52 100644 (file)
@@ -455,7 +455,7 @@ Returns nil if MARKER points into a dead buffer.  */)
         does not preserve the buffer from being GC'd (it's weak), so
         markers have to be unlinked from their buffer as soon as the buffer
         is killed.  */
-      eassert (!NILP (XBUFFER (buf)->name));
+      eassert (!NILP (BUF_NAME (XBUFFER (buf))));
       return buf;
     }
   return Qnil;
index 2a3199b70b9fb20c9cee1e0a75a6a2c4d8587068..9cfa19fbbaa5e3682412086fd440871fcc7aff00 100644 (file)
@@ -460,6 +460,16 @@ other_threads_p (void)
   return avail > 1;
 }
 
+void
+init_threads_once (void)
+{
+  primary_thread.size = PSEUDOVECSIZE (struct thread_state, m_gcprolist);
+  primary_thread.next = NULL;
+  primary_thread.func = Qnil;
+  primary_thread.initial_specpdl = Qnil;
+  XSETPVECTYPE (&primary_thread, PVEC_THREAD);
+}
+
 void
 init_threads (void)
 {
index 556fad2f200bc51eb71f8100a232d561029f753a..423944fe65331bcb8381b1d868086caec01dbc52 100644 (file)
@@ -126,6 +126,8 @@ extern __thread struct thread_state *current_thread;
 
 extern void init_threads P_ ((void));
 
+extern void init_threads_once P_ ((void));
+
 extern void thread_yield P_ ((void));
 
 extern void syms_of_threads P_ ((void));