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)