aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorStefan Monnier2003-06-26 23:16:05 +0000
committerStefan Monnier2003-06-26 23:16:05 +0000
commitef89c2ce88514d734ce96e57f14603eba4c14fff (patch)
tree7e8b44a8909d2c144387a7bcb750d93de9231682 /src
parent568c168cc76729830f2991aa01e98412c321351d (diff)
downloademacs-ef89c2ce88514d734ce96e57f14603eba4c14fff.tar.gz
emacs-ef89c2ce88514d734ce96e57f14603eba4c14fff.zip
(survives_gc_p): Simplify.
(Fmake_marker, free_marker, gc_sweep): Update for new types.
Diffstat (limited to 'src')
-rw-r--r--src/alloc.c39
1 files changed, 4 insertions, 35 deletions
diff --git a/src/alloc.c b/src/alloc.c
index 184edf8417f..886c489e21f 100644
--- a/src/alloc.c
+++ b/src/alloc.c
@@ -2670,7 +2670,7 @@ DEFUN ("make-marker", Fmake_marker, Smake_marker, 0, 0, 0,
2670 p->buffer = 0; 2670 p->buffer = 0;
2671 p->bytepos = 0; 2671 p->bytepos = 0;
2672 p->charpos = 0; 2672 p->charpos = 0;
2673 p->chain = Qnil; 2673 p->next = NULL;
2674 p->insertion_type = 0; 2674 p->insertion_type = 0;
2675 return val; 2675 return val;
2676} 2676}
@@ -2681,7 +2681,7 @@ void
2681free_marker (marker) 2681free_marker (marker)
2682 Lisp_Object marker; 2682 Lisp_Object marker;
2683{ 2683{
2684 unchain_marker (marker); 2684 unchain_marker (XMARKER (marker));
2685 2685
2686 XMISC (marker)->u_marker.type = Lisp_Misc_Free; 2686 XMISC (marker)->u_marker.type = Lisp_Misc_Free;
2687 XMISC (marker)->u_free.chain = marker_free_list; 2687 XMISC (marker)->u_free.chain = marker_free_list;
@@ -4930,33 +4930,7 @@ survives_gc_p (obj)
4930 break; 4930 break;
4931 4931
4932 case Lisp_Misc: 4932 case Lisp_Misc:
4933 /* FIXME: Maybe we should just use obj->mark for all? */ 4933 survives_p = XMARKER (obj)->gcmarkbit;
4934 switch (XMISCTYPE (obj))
4935 {
4936 case Lisp_Misc_Marker:
4937 survives_p = XMARKER (obj)->gcmarkbit;
4938 break;
4939
4940 case Lisp_Misc_Buffer_Local_Value:
4941 case Lisp_Misc_Some_Buffer_Local_Value:
4942 survives_p = XBUFFER_LOCAL_VALUE (obj)->gcmarkbit;
4943 break;
4944
4945 case Lisp_Misc_Intfwd:
4946 case Lisp_Misc_Boolfwd:
4947 case Lisp_Misc_Objfwd:
4948 case Lisp_Misc_Buffer_Objfwd:
4949 case Lisp_Misc_Kboard_Objfwd:
4950 survives_p = 1;
4951 break;
4952
4953 case Lisp_Misc_Overlay:
4954 survives_p = XOVERLAY (obj)->gcmarkbit;
4955 break;
4956
4957 default:
4958 abort ();
4959 }
4960 break; 4934 break;
4961 4935
4962 case Lisp_String: 4936 case Lisp_String:
@@ -5240,12 +5214,7 @@ gc_sweep ()
5240 { 5214 {
5241 Lisp_Object tem; 5215 Lisp_Object tem;
5242 if (mblk->markers[i].u_marker.type == Lisp_Misc_Marker) 5216 if (mblk->markers[i].u_marker.type == Lisp_Misc_Marker)
5243 { 5217 unchain_marker (&mblk->markers[i].u_marker);
5244 /* tem1 avoids Sun compiler bug */
5245 struct Lisp_Marker *tem1 = &mblk->markers[i].u_marker;
5246 XSETMARKER (tem, tem1);
5247 unchain_marker (tem);
5248 }
5249 /* Set the type of the freed object to Lisp_Misc_Free. 5218 /* Set the type of the freed object to Lisp_Misc_Free.
5250 We could leave the type alone, since nobody checks it, 5219 We could leave the type alone, since nobody checks it,
5251 but this might catch bugs faster. */ 5220 but this might catch bugs faster. */