Mercurial > emacs
comparison src/alloc.c @ 11243:054ecfce1820
(Fmake_marker, mark_object): Use XMISCTYPE.
(clear_marks, gc_sweep): Use u_marker union elt to extrat misc type.
| author | Richard M. Stallman <rms@gnu.org> |
|---|---|
| date | Fri, 07 Apr 1995 05:28:07 +0000 |
| parents | 3f19a379eb99 |
| children | e0f3fa4e7bf3 |
comparison
equal
deleted
inserted
replaced
| 11242:36e8e27c8625 | 11243:054ecfce1820 |
|---|---|
| 905 { | 905 { |
| 906 register Lisp_Object val; | 906 register Lisp_Object val; |
| 907 register struct Lisp_Marker *p; | 907 register struct Lisp_Marker *p; |
| 908 | 908 |
| 909 val = allocate_misc (); | 909 val = allocate_misc (); |
| 910 XMISC (val)->type = Lisp_Misc_Marker; | 910 XMISCTYPE (val) = Lisp_Misc_Marker; |
| 911 p = XMARKER (val); | 911 p = XMARKER (val); |
| 912 p->buffer = 0; | 912 p->buffer = 0; |
| 913 p->bufpos = 0; | 913 p->bufpos = 0; |
| 914 p->chain = Qnil; | 914 p->chain = Qnil; |
| 915 return val; | 915 return val; |
| 1538 | 1538 |
| 1539 for (sblk = marker_block; sblk; sblk = sblk->next) | 1539 for (sblk = marker_block; sblk; sblk = sblk->next) |
| 1540 { | 1540 { |
| 1541 register int i; | 1541 register int i; |
| 1542 for (i = 0; i < lim; i++) | 1542 for (i = 0; i < lim; i++) |
| 1543 if (sblk->markers[i].type == Lisp_Misc_Marker) | 1543 if (sblk->markers[i].u_marker.type == Lisp_Misc_Marker) |
| 1544 XUNMARK (sblk->markers[i].u_marker.chain); | 1544 XUNMARK (sblk->markers[i].u_marker.chain); |
| 1545 lim = MARKER_BLOCK_SIZE; | 1545 lim = MARKER_BLOCK_SIZE; |
| 1546 } | 1546 } |
| 1547 } | 1547 } |
| 1548 /* Clear mark bits on all buffers */ | 1548 /* Clear mark bits on all buffers */ |
| 1729 } | 1729 } |
| 1730 } | 1730 } |
| 1731 break; | 1731 break; |
| 1732 | 1732 |
| 1733 case Lisp_Misc: | 1733 case Lisp_Misc: |
| 1734 switch (XMISC (obj)->type) | 1734 switch (XMISCTYPE (obj)) |
| 1735 { | 1735 { |
| 1736 case Lisp_Misc_Marker: | 1736 case Lisp_Misc_Marker: |
| 1737 XMARK (XMARKER (obj)->chain); | 1737 XMARK (XMARKER (obj)->chain); |
| 1738 /* DO NOT mark thru the marker's chain. | 1738 /* DO NOT mark thru the marker's chain. |
| 1739 The buffer's markers chain does not preserve markers from gc; | 1739 The buffer's markers chain does not preserve markers from gc; |
| 2031 { | 2031 { |
| 2032 register int i; | 2032 register int i; |
| 2033 for (i = 0; i < lim; i++) | 2033 for (i = 0; i < lim; i++) |
| 2034 { | 2034 { |
| 2035 Lisp_Object *markword; | 2035 Lisp_Object *markword; |
| 2036 switch (mblk->markers[i].type) | 2036 switch (mblk->markers[i].u_marker.type) |
| 2037 { | 2037 { |
| 2038 case Lisp_Misc_Marker: | 2038 case Lisp_Misc_Marker: |
| 2039 markword = &mblk->markers[i].u_marker.chain; | 2039 markword = &mblk->markers[i].u_marker.chain; |
| 2040 break; | 2040 break; |
| 2041 case Lisp_Misc_Buffer_Local_Value: | 2041 case Lisp_Misc_Buffer_Local_Value: |
| 2050 break; | 2050 break; |
| 2051 } | 2051 } |
| 2052 if (markword && !XMARKBIT (*markword)) | 2052 if (markword && !XMARKBIT (*markword)) |
| 2053 { | 2053 { |
| 2054 Lisp_Object tem; | 2054 Lisp_Object tem; |
| 2055 if (mblk->markers[i].type == Lisp_Misc_Marker) | 2055 if (mblk->markers[i].u_marker.type == Lisp_Misc_Marker) |
| 2056 { | 2056 { |
| 2057 /* tem1 avoids Sun compiler bug */ | 2057 /* tem1 avoids Sun compiler bug */ |
| 2058 struct Lisp_Marker *tem1 = &mblk->markers[i].u_marker; | 2058 struct Lisp_Marker *tem1 = &mblk->markers[i].u_marker; |
| 2059 XSETMARKER (tem, tem1); | 2059 XSETMARKER (tem, tem1); |
| 2060 unchain_marker (tem); | 2060 unchain_marker (tem); |
| 2061 } | 2061 } |
| 2062 /* We could leave the type alone, since nobody checks it, | 2062 /* We could leave the type alone, since nobody checks it, |
| 2063 but this might catch bugs faster. */ | 2063 but this might catch bugs faster. */ |
| 2064 mblk->markers[i].type = Lisp_Misc_Free; | 2064 mblk->markers[i].u_marker.type = Lisp_Misc_Free; |
| 2065 mblk->markers[i].u_free.chain = marker_free_list; | 2065 mblk->markers[i].u_free.chain = marker_free_list; |
| 2066 marker_free_list = &mblk->markers[i]; | 2066 marker_free_list = &mblk->markers[i]; |
| 2067 num_free++; | 2067 num_free++; |
| 2068 } | 2068 } |
| 2069 else | 2069 else |
