/[emacs]/emacs/src/alloc.c
ViewVC logotype

Diff of /emacs/src/alloc.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.304 by monnier, Wed Jun 25 23:27:32 2003 UTC revision 1.305 by monnier, Thu Jun 26 23:16:05 2003 UTC
# Line 2670  DEFUN ("make-marker", Fmake_marker, Smak Line 2670  DEFUN ("make-marker", Fmake_marker, Smak
2670    p->buffer = 0;    p->buffer = 0;
2671    p->bytepos = 0;    p->bytepos = 0;
2672    p->charpos = 0;    p->charpos = 0;
2673    p->chain = Qnil;    p->next = NULL;
2674    p->insertion_type = 0;    p->insertion_type = 0;
2675    return val;    return val;
2676  }  }
# Line 2681  void Line 2681  void
2681  free_marker (marker)  free_marker (marker)
2682       Lisp_Object marker;       Lisp_Object marker;
2683  {  {
2684    unchain_marker (marker);    unchain_marker (XMARKER (marker));
2685    
2686    XMISC (marker)->u_marker.type = Lisp_Misc_Free;    XMISC (marker)->u_marker.type = Lisp_Misc_Free;
2687    XMISC (marker)->u_free.chain = marker_free_list;    XMISC (marker)->u_free.chain = marker_free_list;
# Line 4930  survives_gc_p (obj) Line 4930  survives_gc_p (obj)
4930        break;        break;
4931    
4932      case Lisp_Misc:      case Lisp_Misc:
4933        /* FIXME: Maybe we should just use obj->mark for all?  */        survives_p = XMARKER (obj)->gcmarkbit;
       switch (XMISCTYPE (obj))  
         {  
         case Lisp_Misc_Marker:  
           survives_p = XMARKER (obj)->gcmarkbit;  
           break;  
   
         case Lisp_Misc_Buffer_Local_Value:  
         case Lisp_Misc_Some_Buffer_Local_Value:  
           survives_p = XBUFFER_LOCAL_VALUE (obj)->gcmarkbit;  
           break;  
   
         case Lisp_Misc_Intfwd:  
         case Lisp_Misc_Boolfwd:  
         case Lisp_Misc_Objfwd:  
         case Lisp_Misc_Buffer_Objfwd:  
         case Lisp_Misc_Kboard_Objfwd:  
           survives_p = 1;  
           break;  
   
         case Lisp_Misc_Overlay:  
           survives_p = XOVERLAY (obj)->gcmarkbit;  
           break;  
   
         default:  
           abort ();  
         }  
4934        break;        break;
4935    
4936      case Lisp_String:      case Lisp_String:
# Line 5240  gc_sweep () Line 5214  gc_sweep ()
5214                {                {
5215                  Lisp_Object tem;                  Lisp_Object tem;
5216                  if (mblk->markers[i].u_marker.type == Lisp_Misc_Marker)                  if (mblk->markers[i].u_marker.type == Lisp_Misc_Marker)
5217                    {                    unchain_marker (&mblk->markers[i].u_marker);
                     /* tem1 avoids Sun compiler bug */  
                     struct Lisp_Marker *tem1 = &mblk->markers[i].u_marker;  
                     XSETMARKER (tem, tem1);  
                     unchain_marker (tem);  
                   }  
5218                  /* Set the type of the freed object to Lisp_Misc_Free.                  /* Set the type of the freed object to Lisp_Misc_Free.
5219                     We could leave the type alone, since nobody checks it,                     We could leave the type alone, since nobody checks it,
5220                     but this might catch bugs faster.  */                     but this might catch bugs faster.  */

Legend:
Removed from v.1.304  
changed lines
  Added in v.1.305

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26