diff options
| author | Stefan Monnier | 2003-06-26 23:16:05 +0000 |
|---|---|---|
| committer | Stefan Monnier | 2003-06-26 23:16:05 +0000 |
| commit | ef89c2ce88514d734ce96e57f14603eba4c14fff (patch) | |
| tree | 7e8b44a8909d2c144387a7bcb750d93de9231682 /src | |
| parent | 568c168cc76729830f2991aa01e98412c321351d (diff) | |
| download | emacs-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.c | 39 |
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 | |||
| 2681 | free_marker (marker) | 2681 | free_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. */ |