Mercurial > emacs
comparison src/alloc.c @ 9926:2a9f99682f82
(mark_object, gc_sweep): Use new overlay substructure.
author | Karl Heuer <kwzh@gnu.org> |
---|---|
date | Tue, 15 Nov 1994 02:04:40 +0000 |
parents | 8421d09f2afe |
children | c189487b08dd |
comparison
equal
deleted
inserted
replaced
9925:b039e4156d74 | 9926:2a9f99682f82 |
---|---|
1669 since all markable slots in current buffer marked anyway. */ | 1669 since all markable slots in current buffer marked anyway. */ |
1670 /* Don't need to do Lisp_Objfwd, since the places they point | 1670 /* Don't need to do Lisp_Objfwd, since the places they point |
1671 are protected with staticpro. */ | 1671 are protected with staticpro. */ |
1672 break; | 1672 break; |
1673 | 1673 |
1674 case Lisp_Misc_Overlay: | |
1675 { | |
1676 struct Lisp_Overlay *ptr = XOVERLAY (obj); | |
1677 if (!XMARKBIT (ptr->plist)) | |
1678 { | |
1679 XMARK (ptr->plist); | |
1680 mark_object (&ptr->start); | |
1681 mark_object (&ptr->end); | |
1682 objptr = &ptr->plist; | |
1683 goto loop; | |
1684 } | |
1685 } | |
1686 break; | |
1687 | |
1674 default: | 1688 default: |
1675 abort (); | 1689 abort (); |
1676 } | 1690 } |
1677 break; | 1691 break; |
1678 | 1692 |
1679 case Lisp_Cons: | 1693 case Lisp_Cons: |
1680 case Lisp_Overlay: | |
1681 { | 1694 { |
1682 register struct Lisp_Cons *ptr = XCONS (obj); | 1695 register struct Lisp_Cons *ptr = XCONS (obj); |
1683 if (XMARKBIT (ptr->car)) break; | 1696 if (XMARKBIT (ptr->car)) break; |
1684 XMARK (ptr->car); | 1697 XMARK (ptr->car); |
1685 /* If the cdr is nil, avoid recursion for the car. */ | 1698 /* If the cdr is nil, avoid recursion for the car. */ |
1910 break; | 1923 break; |
1911 case Lisp_Misc_Buffer_Local_Value: | 1924 case Lisp_Misc_Buffer_Local_Value: |
1912 case Lisp_Misc_Some_Buffer_Local_Value: | 1925 case Lisp_Misc_Some_Buffer_Local_Value: |
1913 markword = &mblk->markers[i].u_buffer_local_value.car; | 1926 markword = &mblk->markers[i].u_buffer_local_value.car; |
1914 break; | 1927 break; |
1928 case Lisp_Misc_Overlay: | |
1929 markword = &mblk->markers[i].u_overlay.plist; | |
1930 break; | |
1915 default: | 1931 default: |
1916 markword = 0; | 1932 markword = 0; |
1933 break; | |
1917 } | 1934 } |
1918 if (markword && !XMARKBIT (*markword)) | 1935 if (markword && !XMARKBIT (*markword)) |
1919 { | 1936 { |
1920 Lisp_Object tem; | 1937 Lisp_Object tem; |
1921 if (mblk->markers[i].type == Lisp_Misc_Marker) | 1938 if (mblk->markers[i].type == Lisp_Misc_Marker) |