Mercurial > emacs
comparison src/alloc.c @ 85328:d0d527210b0c
* lisp.h (enum Lisp_Misc_Type): Del Lisp_Misc_Some_Buffer_Local_Value.
(XMISCANY): New macro.
(XMISCTYPE): Use it.
(struct Lisp_Misc_Any): New type.
(union Lisp_Misc): Use it.
(struct Lisp_Buffer_Local_Value): Add `local_if_set' bit.
* data.c (Fboundp, store_symval_forwarding, swap_in_global_binding)
(find_symbol_value, set_internal, default_value, Fset_default)
(Fmake_variable_buffer_local, Fmake_local_variable)
(Fkill_local_variable, Fmake_variable_frame_local, Flocal_variable_p)
(Flocal_variable_if_set_p, Fvariable_binding_locus):
The SOME_BUFFER_LOCAL_VALUEP distinction is replaced by local_if_set.
* alloc.c (allocate_buffer): Set the size and tag.
(allocate_misc, mark_maybe_object, mark_object, survives_gc_p):
Use XMISCANY.
(die): Follow the GNU convention for error messages.
* print.c (print_object): SOME_BUFFER_LOCAL_VALUEP -> local_if_set.
* buffer.c (Fget_buffer_create, Fmake_indirect_buffer): Don't set the
tag any more.
(set_buffer_internal_1):
* frame.c (store_frame_param):
* eval.c (specbind):
* xdisp.c (select_frame_for_redisplay): Drop SOME_BUFFER_LOCAL_VALUEP.
| author | Stefan Monnier <monnier@iro.umontreal.ca> |
|---|---|
| date | Tue, 16 Oct 2007 15:42:58 +0000 |
| parents | 0161d8024935 |
| children | ad9922c079e4 |
comparison
equal
deleted
inserted
replaced
| 85327:84eaa97c1d65 | 85328:d0d527210b0c |
|---|---|
| 1151 allocate_buffer () | 1151 allocate_buffer () |
| 1152 { | 1152 { |
| 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 |
| 1159 | 1161 |
| 1160 #ifndef SYSTEM_MALLOC | 1162 #ifndef SYSTEM_MALLOC |
| 3350 MALLOC_UNBLOCK_INPUT; | 3352 MALLOC_UNBLOCK_INPUT; |
| 3351 | 3353 |
| 3352 --total_free_markers; | 3354 --total_free_markers; |
| 3353 consing_since_gc += sizeof (union Lisp_Misc); | 3355 consing_since_gc += sizeof (union Lisp_Misc); |
| 3354 misc_objects_consed++; | 3356 misc_objects_consed++; |
| 3355 XMARKER (val)->gcmarkbit = 0; | 3357 XMISCANY (val)->gcmarkbit = 0; |
| 3356 return val; | 3358 return val; |
| 3357 } | 3359 } |
| 3358 | 3360 |
| 3359 /* Free a Lisp_Misc object */ | 3361 /* Free a Lisp_Misc object */ |
| 3360 | 3362 |
| 4207 else if (live_buffer_p (m, po)) | 4209 else if (live_buffer_p (m, po)) |
| 4208 mark_p = GC_BUFFERP (obj) && !VECTOR_MARKED_P (XBUFFER (obj)); | 4210 mark_p = GC_BUFFERP (obj) && !VECTOR_MARKED_P (XBUFFER (obj)); |
| 4209 break; | 4211 break; |
| 4210 | 4212 |
| 4211 case Lisp_Misc: | 4213 case Lisp_Misc: |
| 4212 mark_p = (live_misc_p (m, po) && !XMARKER (obj)->gcmarkbit); | 4214 mark_p = (live_misc_p (m, po) && !XMISCANY (obj)->gcmarkbit); |
| 4213 break; | 4215 break; |
| 4214 | 4216 |
| 4215 case Lisp_Int: | 4217 case Lisp_Int: |
| 4216 case Lisp_Type_Limit: | 4218 case Lisp_Type_Limit: |
| 4217 break; | 4219 break; |
| 5652 } | 5654 } |
| 5653 break; | 5655 break; |
| 5654 | 5656 |
| 5655 case Lisp_Misc: | 5657 case Lisp_Misc: |
| 5656 CHECK_ALLOCATED_AND_LIVE (live_misc_p); | 5658 CHECK_ALLOCATED_AND_LIVE (live_misc_p); |
| 5657 if (XMARKER (obj)->gcmarkbit) | 5659 if (XMISCANY (obj)->gcmarkbit) |
| 5658 break; | 5660 break; |
| 5659 XMARKER (obj)->gcmarkbit = 1; | 5661 XMISCANY (obj)->gcmarkbit = 1; |
| 5660 | 5662 |
| 5661 switch (XMISCTYPE (obj)) | 5663 switch (XMISCTYPE (obj)) |
| 5662 { | 5664 { |
| 5663 case Lisp_Misc_Buffer_Local_Value: | 5665 case Lisp_Misc_Buffer_Local_Value: |
| 5664 case Lisp_Misc_Some_Buffer_Local_Value: | |
| 5665 { | 5666 { |
| 5666 register struct Lisp_Buffer_Local_Value *ptr | 5667 register struct Lisp_Buffer_Local_Value *ptr |
| 5667 = XBUFFER_LOCAL_VALUE (obj); | 5668 = XBUFFER_LOCAL_VALUE (obj); |
| 5668 /* If the cdr is nil, avoid recursion for the car. */ | 5669 /* If the cdr is nil, avoid recursion for the car. */ |
| 5669 if (EQ (ptr->cdr, Qnil)) | 5670 if (EQ (ptr->cdr, Qnil)) |
| 5845 case Lisp_Symbol: | 5846 case Lisp_Symbol: |
| 5846 survives_p = XSYMBOL (obj)->gcmarkbit; | 5847 survives_p = XSYMBOL (obj)->gcmarkbit; |
| 5847 break; | 5848 break; |
| 5848 | 5849 |
| 5849 case Lisp_Misc: | 5850 case Lisp_Misc: |
| 5850 survives_p = XMARKER (obj)->gcmarkbit; | 5851 survives_p = XMISCANY (obj)->gcmarkbit; |
| 5851 break; | 5852 break; |
| 5852 | 5853 |
| 5853 case Lisp_String: | 5854 case Lisp_String: |
| 5854 survives_p = STRING_MARKED_P (XSTRING (obj)); | 5855 survives_p = STRING_MARKED_P (XSTRING (obj)); |
| 5855 break; | 5856 break; |
| 6295 die (msg, file, line) | 6296 die (msg, file, line) |
| 6296 const char *msg; | 6297 const char *msg; |
| 6297 const char *file; | 6298 const char *file; |
| 6298 int line; | 6299 int line; |
| 6299 { | 6300 { |
| 6300 fprintf (stderr, "\r\nEmacs fatal error: %s:%d: %s\r\n", | 6301 fprintf (stderr, "\r\n%s:%d: Emacs fatal error: %s\r\n", |
| 6301 file, line, msg); | 6302 file, line, msg); |
| 6302 abort (); | 6303 abort (); |
| 6303 } | 6304 } |
| 6304 | 6305 |
| 6305 /* Initialization */ | 6306 /* Initialization */ |
