diff options
Diffstat (limited to 'src/alloc.c')
| -rw-r--r-- | src/alloc.c | 25 |
1 files changed, 13 insertions, 12 deletions
diff --git a/src/alloc.c b/src/alloc.c index ed003af3ea8..295da59d026 100644 --- a/src/alloc.c +++ b/src/alloc.c | |||
| @@ -1153,6 +1153,8 @@ allocate_buffer () | |||
| 1153 | struct buffer *b | 1153 | struct buffer *b |
| 1154 | = (struct buffer *) lisp_malloc (sizeof (struct buffer), | 1154 | = (struct buffer *) lisp_malloc (sizeof (struct buffer), |
| 1155 | MEM_TYPE_BUFFER); | 1155 | MEM_TYPE_BUFFER); |
| 1156 | b->size = sizeof (struct buffer) / sizeof (EMACS_INT); | ||
| 1157 | XSETPVECTYPE (b, PVEC_BUFFER); | ||
| 1156 | return b; | 1158 | return b; |
| 1157 | } | 1159 | } |
| 1158 | 1160 | ||
| @@ -3307,7 +3309,7 @@ allocate_misc () | |||
| 3307 | --total_free_markers; | 3309 | --total_free_markers; |
| 3308 | consing_since_gc += sizeof (union Lisp_Misc); | 3310 | consing_since_gc += sizeof (union Lisp_Misc); |
| 3309 | misc_objects_consed++; | 3311 | misc_objects_consed++; |
| 3310 | XMARKER (val)->gcmarkbit = 0; | 3312 | XMISCANY (val)->gcmarkbit = 0; |
| 3311 | return val; | 3313 | return val; |
| 3312 | } | 3314 | } |
| 3313 | 3315 | ||
| @@ -3317,7 +3319,7 @@ void | |||
| 3317 | free_misc (misc) | 3319 | free_misc (misc) |
| 3318 | Lisp_Object misc; | 3320 | Lisp_Object misc; |
| 3319 | { | 3321 | { |
| 3320 | XMISC (misc)->u_marker.type = Lisp_Misc_Free; | 3322 | XMISCTYPE (misc) = Lisp_Misc_Free; |
| 3321 | XMISC (misc)->u_free.chain = marker_free_list; | 3323 | XMISC (misc)->u_free.chain = marker_free_list; |
| 3322 | marker_free_list = XMISC (misc); | 3324 | marker_free_list = XMISC (misc); |
| 3323 | 3325 | ||
| @@ -4033,7 +4035,7 @@ live_misc_p (m, p) | |||
| 4033 | && offset < (MARKER_BLOCK_SIZE * sizeof b->markers[0]) | 4035 | && offset < (MARKER_BLOCK_SIZE * sizeof b->markers[0]) |
| 4034 | && (b != marker_block | 4036 | && (b != marker_block |
| 4035 | || offset / sizeof b->markers[0] < marker_block_index) | 4037 | || offset / sizeof b->markers[0] < marker_block_index) |
| 4036 | && ((union Lisp_Misc *) p)->u_marker.type != Lisp_Misc_Free); | 4038 | && ((union Lisp_Misc *) p)->u_any.type != Lisp_Misc_Free); |
| 4037 | } | 4039 | } |
| 4038 | else | 4040 | else |
| 4039 | return 0; | 4041 | return 0; |
| @@ -4164,7 +4166,7 @@ mark_maybe_object (obj) | |||
| 4164 | break; | 4166 | break; |
| 4165 | 4167 | ||
| 4166 | case Lisp_Misc: | 4168 | case Lisp_Misc: |
| 4167 | mark_p = (live_misc_p (m, po) && !XMARKER (obj)->gcmarkbit); | 4169 | mark_p = (live_misc_p (m, po) && !XMISCANY (obj)->gcmarkbit); |
| 4168 | break; | 4170 | break; |
| 4169 | 4171 | ||
| 4170 | case Lisp_Int: | 4172 | case Lisp_Int: |
| @@ -5613,14 +5615,13 @@ mark_object (arg) | |||
| 5613 | 5615 | ||
| 5614 | case Lisp_Misc: | 5616 | case Lisp_Misc: |
| 5615 | CHECK_ALLOCATED_AND_LIVE (live_misc_p); | 5617 | CHECK_ALLOCATED_AND_LIVE (live_misc_p); |
| 5616 | if (XMARKER (obj)->gcmarkbit) | 5618 | if (XMISCANY (obj)->gcmarkbit) |
| 5617 | break; | 5619 | break; |
| 5618 | XMARKER (obj)->gcmarkbit = 1; | 5620 | XMISCANY (obj)->gcmarkbit = 1; |
| 5619 | 5621 | ||
| 5620 | switch (XMISCTYPE (obj)) | 5622 | switch (XMISCTYPE (obj)) |
| 5621 | { | 5623 | { |
| 5622 | case Lisp_Misc_Buffer_Local_Value: | 5624 | case Lisp_Misc_Buffer_Local_Value: |
| 5623 | case Lisp_Misc_Some_Buffer_Local_Value: | ||
| 5624 | { | 5625 | { |
| 5625 | register struct Lisp_Buffer_Local_Value *ptr | 5626 | register struct Lisp_Buffer_Local_Value *ptr |
| 5626 | = XBUFFER_LOCAL_VALUE (obj); | 5627 | = XBUFFER_LOCAL_VALUE (obj); |
| @@ -5806,7 +5807,7 @@ survives_gc_p (obj) | |||
| 5806 | break; | 5807 | break; |
| 5807 | 5808 | ||
| 5808 | case Lisp_Misc: | 5809 | case Lisp_Misc: |
| 5809 | survives_p = XMARKER (obj)->gcmarkbit; | 5810 | survives_p = XMISCANY (obj)->gcmarkbit; |
| 5810 | break; | 5811 | break; |
| 5811 | 5812 | ||
| 5812 | case Lisp_String: | 5813 | case Lisp_String: |
| @@ -6103,9 +6104,9 @@ gc_sweep () | |||
| 6103 | 6104 | ||
| 6104 | for (i = 0; i < lim; i++) | 6105 | for (i = 0; i < lim; i++) |
| 6105 | { | 6106 | { |
| 6106 | if (!mblk->markers[i].u_marker.gcmarkbit) | 6107 | if (!mblk->markers[i].u_any.gcmarkbit) |
| 6107 | { | 6108 | { |
| 6108 | if (mblk->markers[i].u_marker.type == Lisp_Misc_Marker) | 6109 | if (mblk->markers[i].u_any.type == Lisp_Misc_Marker) |
| 6109 | unchain_marker (&mblk->markers[i].u_marker); | 6110 | unchain_marker (&mblk->markers[i].u_marker); |
| 6110 | /* Set the type of the freed object to Lisp_Misc_Free. | 6111 | /* Set the type of the freed object to Lisp_Misc_Free. |
| 6111 | We could leave the type alone, since nobody checks it, | 6112 | We could leave the type alone, since nobody checks it, |
| @@ -6118,7 +6119,7 @@ gc_sweep () | |||
| 6118 | else | 6119 | else |
| 6119 | { | 6120 | { |
| 6120 | num_used++; | 6121 | num_used++; |
| 6121 | mblk->markers[i].u_marker.gcmarkbit = 0; | 6122 | mblk->markers[i].u_any.gcmarkbit = 0; |
| 6122 | } | 6123 | } |
| 6123 | } | 6124 | } |
| 6124 | lim = MARKER_BLOCK_SIZE; | 6125 | lim = MARKER_BLOCK_SIZE; |
| @@ -6256,7 +6257,7 @@ die (msg, file, line) | |||
| 6256 | const char *file; | 6257 | const char *file; |
| 6257 | int line; | 6258 | int line; |
| 6258 | { | 6259 | { |
| 6259 | fprintf (stderr, "\r\nEmacs fatal error: %s:%d: %s\r\n", | 6260 | fprintf (stderr, "\r\n%s:%d: Emacs fatal error: %s\r\n", |
| 6260 | file, line, msg); | 6261 | file, line, msg); |
| 6261 | abort (); | 6262 | abort (); |
| 6262 | } | 6263 | } |