]> code.delx.au - gnu-emacs/blobdiff - src/alloc.c
Merge from emacs--devo--0
[gnu-emacs] / src / alloc.c
index ed003af3ea849c75c5480f2bbfea928ec5ff3b0c..295da59d026cb4fe18fdaac626feff0af37f1fbd 100644 (file)
@@ -1153,6 +1153,8 @@ allocate_buffer ()
   struct buffer *b
     = (struct buffer *) lisp_malloc (sizeof (struct buffer),
                                     MEM_TYPE_BUFFER);
+  b->size = sizeof (struct buffer) / sizeof (EMACS_INT);
+  XSETPVECTYPE (b, PVEC_BUFFER);
   return b;
 }
 
@@ -3307,7 +3309,7 @@ allocate_misc ()
   --total_free_markers;
   consing_since_gc += sizeof (union Lisp_Misc);
   misc_objects_consed++;
-  XMARKER (val)->gcmarkbit = 0;
+  XMISCANY (val)->gcmarkbit = 0;
   return val;
 }
 
@@ -3317,7 +3319,7 @@ void
 free_misc (misc)
      Lisp_Object misc;
 {
-  XMISC (misc)->u_marker.type = Lisp_Misc_Free;
+  XMISCTYPE (misc) = Lisp_Misc_Free;
   XMISC (misc)->u_free.chain = marker_free_list;
   marker_free_list = XMISC (misc);
 
@@ -4033,7 +4035,7 @@ live_misc_p (m, p)
              && offset < (MARKER_BLOCK_SIZE * sizeof b->markers[0])
              && (b != marker_block
                  || offset / sizeof b->markers[0] < marker_block_index)
-             && ((union Lisp_Misc *) p)->u_marker.type != Lisp_Misc_Free);
+             && ((union Lisp_Misc *) p)->u_any.type != Lisp_Misc_Free);
     }
   else
     return 0;
@@ -4164,7 +4166,7 @@ mark_maybe_object (obj)
          break;
 
        case Lisp_Misc:
-         mark_p = (live_misc_p (m, po) && !XMARKER (obj)->gcmarkbit);
+         mark_p = (live_misc_p (m, po) && !XMISCANY (obj)->gcmarkbit);
          break;
 
        case Lisp_Int:
@@ -5613,14 +5615,13 @@ mark_object (arg)
 
     case Lisp_Misc:
       CHECK_ALLOCATED_AND_LIVE (live_misc_p);
-      if (XMARKER (obj)->gcmarkbit)
+      if (XMISCANY (obj)->gcmarkbit)
        break;
-      XMARKER (obj)->gcmarkbit = 1;
+      XMISCANY (obj)->gcmarkbit = 1;
 
       switch (XMISCTYPE (obj))
        {
        case Lisp_Misc_Buffer_Local_Value:
-       case Lisp_Misc_Some_Buffer_Local_Value:
          {
            register struct Lisp_Buffer_Local_Value *ptr
              = XBUFFER_LOCAL_VALUE (obj);
@@ -5806,7 +5807,7 @@ survives_gc_p (obj)
       break;
 
     case Lisp_Misc:
-      survives_p = XMARKER (obj)->gcmarkbit;
+      survives_p = XMISCANY (obj)->gcmarkbit;
       break;
 
     case Lisp_String:
@@ -6103,9 +6104,9 @@ gc_sweep ()
 
        for (i = 0; i < lim; i++)
          {
-           if (!mblk->markers[i].u_marker.gcmarkbit)
+           if (!mblk->markers[i].u_any.gcmarkbit)
              {
-               if (mblk->markers[i].u_marker.type == Lisp_Misc_Marker)
+               if (mblk->markers[i].u_any.type == Lisp_Misc_Marker)
                  unchain_marker (&mblk->markers[i].u_marker);
                /* Set the type of the freed object to Lisp_Misc_Free.
                   We could leave the type alone, since nobody checks it,
@@ -6118,7 +6119,7 @@ gc_sweep ()
            else
              {
                num_used++;
-               mblk->markers[i].u_marker.gcmarkbit = 0;
+               mblk->markers[i].u_any.gcmarkbit = 0;
              }
          }
        lim = MARKER_BLOCK_SIZE;
@@ -6256,7 +6257,7 @@ die (msg, file, line)
      const char *file;
      int line;
 {
-  fprintf (stderr, "\r\nEmacs fatal error: %s:%d: %s\r\n",
+  fprintf (stderr, "\r\n%s:%d: Emacs fatal error: %s\r\n",
           file, line, msg);
   abort ();
 }