diff options
| author | Karl Heuer | 1994-11-15 02:04:40 +0000 |
|---|---|---|
| committer | Karl Heuer | 1994-11-15 02:04:40 +0000 |
| commit | e202fa3405af38c0dd70f4146d8b796c86df3328 (patch) | |
| tree | 1fb70976128198f9751c15b2f801387558bdef9a /src/alloc.c | |
| parent | 21f7c864004da8750440588298e1975f457d50e7 (diff) | |
| download | emacs-e202fa3405af38c0dd70f4146d8b796c86df3328.tar.gz emacs-e202fa3405af38c0dd70f4146d8b796c86df3328.zip | |
(mark_object, gc_sweep): Use new overlay substructure.
Diffstat (limited to 'src/alloc.c')
| -rw-r--r-- | src/alloc.c | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/src/alloc.c b/src/alloc.c index 4ff5bcfb4e7..bd62b95fc5e 100644 --- a/src/alloc.c +++ b/src/alloc.c | |||
| @@ -1671,13 +1671,26 @@ mark_object (objptr) | |||
| 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; |
| @@ -1912,8 +1925,12 @@ gc_sweep () | |||
| 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 | { |