Mercurial > emacs
comparison src/alloc.c @ 90970:3371fc48749b
Replace uses of GC_* macros with the non-GC_ versions.
| author | Stefan Monnier <monnier@iro.umontreal.ca> |
|---|---|
| date | Fri, 29 Jun 2007 03:37:33 +0000 |
| parents | e9f94688a064 |
| children | a66921565bcb |
comparison
equal
deleted
inserted
replaced
| 90969:0848217e8e8a | 90970:3371fc48749b |
|---|---|
| 4158 | 4158 |
| 4159 if (m != MEM_NIL) | 4159 if (m != MEM_NIL) |
| 4160 { | 4160 { |
| 4161 int mark_p = 0; | 4161 int mark_p = 0; |
| 4162 | 4162 |
| 4163 switch (XGCTYPE (obj)) | 4163 switch (XTYPE (obj)) |
| 4164 { | 4164 { |
| 4165 case Lisp_String: | 4165 case Lisp_String: |
| 4166 mark_p = (live_string_p (m, po) | 4166 mark_p = (live_string_p (m, po) |
| 4167 && !STRING_MARKED_P ((struct Lisp_String *) po)); | 4167 && !STRING_MARKED_P ((struct Lisp_String *) po)); |
| 4168 break; | 4168 break; |
| 4178 case Lisp_Float: | 4178 case Lisp_Float: |
| 4179 mark_p = (live_float_p (m, po) && !FLOAT_MARKED_P (XFLOAT (obj))); | 4179 mark_p = (live_float_p (m, po) && !FLOAT_MARKED_P (XFLOAT (obj))); |
| 4180 break; | 4180 break; |
| 4181 | 4181 |
| 4182 case Lisp_Vectorlike: | 4182 case Lisp_Vectorlike: |
| 4183 /* Note: can't check GC_BUFFERP before we know it's a | 4183 /* Note: can't check BUFFERP before we know it's a |
| 4184 buffer because checking that dereferences the pointer | 4184 buffer because checking that dereferences the pointer |
| 4185 PO which might point anywhere. */ | 4185 PO which might point anywhere. */ |
| 4186 if (live_vector_p (m, po)) | 4186 if (live_vector_p (m, po)) |
| 4187 mark_p = !GC_SUBRP (obj) && !VECTOR_MARKED_P (XVECTOR (obj)); | 4187 mark_p = !SUBRP (obj) && !VECTOR_MARKED_P (XVECTOR (obj)); |
| 4188 else if (live_buffer_p (m, po)) | 4188 else if (live_buffer_p (m, po)) |
| 4189 mark_p = GC_BUFFERP (obj) && !VECTOR_MARKED_P (XBUFFER (obj)); | 4189 mark_p = BUFFERP (obj) && !VECTOR_MARKED_P (XBUFFER (obj)); |
| 4190 break; | 4190 break; |
| 4191 | 4191 |
| 4192 case Lisp_Misc: | 4192 case Lisp_Misc: |
| 4193 mark_p = (live_misc_p (m, po) && !XMARKER (obj)->gcmarkbit); | 4193 mark_p = (live_misc_p (m, po) && !XMARKER (obj)->gcmarkbit); |
| 4194 break; | 4194 break; |
| 4274 case MEM_TYPE_WINDOW: | 4274 case MEM_TYPE_WINDOW: |
| 4275 if (live_vector_p (m, p)) | 4275 if (live_vector_p (m, p)) |
| 4276 { | 4276 { |
| 4277 Lisp_Object tem; | 4277 Lisp_Object tem; |
| 4278 XSETVECTOR (tem, p); | 4278 XSETVECTOR (tem, p); |
| 4279 if (!GC_SUBRP (tem) && !VECTOR_MARKED_P (XVECTOR (tem))) | 4279 if (!SUBRP (tem) && !VECTOR_MARKED_P (XVECTOR (tem))) |
| 4280 obj = tem; | 4280 obj = tem; |
| 4281 } | 4281 } |
| 4282 break; | 4282 break; |
| 4283 | 4283 |
| 4284 default: | 4284 default: |
| 4285 abort (); | 4285 abort (); |
| 4286 } | 4286 } |
| 4287 | 4287 |
| 4288 if (!GC_NILP (obj)) | 4288 if (!NILP (obj)) |
| 4289 mark_object (obj); | 4289 mark_object (obj); |
| 4290 } | 4290 } |
| 4291 } | 4291 } |
| 4292 | 4292 |
| 4293 | 4293 |
| 5186 Lisp_Object tail, prev; | 5186 Lisp_Object tail, prev; |
| 5187 tail = nextb->undo_list; | 5187 tail = nextb->undo_list; |
| 5188 prev = Qnil; | 5188 prev = Qnil; |
| 5189 while (CONSP (tail)) | 5189 while (CONSP (tail)) |
| 5190 { | 5190 { |
| 5191 if (GC_CONSP (XCAR (tail)) | 5191 if (CONSP (XCAR (tail)) |
| 5192 && GC_MARKERP (XCAR (XCAR (tail))) | 5192 && MARKERP (XCAR (XCAR (tail))) |
| 5193 && !XMARKER (XCAR (XCAR (tail)))->gcmarkbit) | 5193 && !XMARKER (XCAR (XCAR (tail)))->gcmarkbit) |
| 5194 { | 5194 { |
| 5195 if (NILP (prev)) | 5195 if (NILP (prev)) |
| 5196 nextb->undo_list = tail = XCDR (tail); | 5196 nextb->undo_list = tail = XCDR (tail); |
| 5197 else | 5197 else |
| 5336 { | 5336 { |
| 5337 struct glyph *glyph = row->glyphs[area]; | 5337 struct glyph *glyph = row->glyphs[area]; |
| 5338 struct glyph *end_glyph = glyph + row->used[area]; | 5338 struct glyph *end_glyph = glyph + row->used[area]; |
| 5339 | 5339 |
| 5340 for (; glyph < end_glyph; ++glyph) | 5340 for (; glyph < end_glyph; ++glyph) |
| 5341 if (GC_STRINGP (glyph->object) | 5341 if (STRINGP (glyph->object) |
| 5342 && !STRING_MARKED_P (XSTRING (glyph->object))) | 5342 && !STRING_MARKED_P (XSTRING (glyph->object))) |
| 5343 mark_object (glyph->object); | 5343 mark_object (glyph->object); |
| 5344 } | 5344 } |
| 5345 } | 5345 } |
| 5346 } | 5346 } |
| 5469 #define CHECK_LIVE(LIVEP) (void) 0 | 5469 #define CHECK_LIVE(LIVEP) (void) 0 |
| 5470 #define CHECK_ALLOCATED_AND_LIVE(LIVEP) (void) 0 | 5470 #define CHECK_ALLOCATED_AND_LIVE(LIVEP) (void) 0 |
| 5471 | 5471 |
| 5472 #endif /* not GC_CHECK_MARKED_OBJECTS */ | 5472 #endif /* not GC_CHECK_MARKED_OBJECTS */ |
| 5473 | 5473 |
| 5474 switch (SWITCH_ENUM_CAST (XGCTYPE (obj))) | 5474 switch (SWITCH_ENUM_CAST (XTYPE (obj))) |
| 5475 { | 5475 { |
| 5476 case Lisp_String: | 5476 case Lisp_String: |
| 5477 { | 5477 { |
| 5478 register struct Lisp_String *ptr = XSTRING (obj); | 5478 register struct Lisp_String *ptr = XSTRING (obj); |
| 5479 CHECK_ALLOCATED_AND_LIVE (live_string_p); | 5479 CHECK_ALLOCATED_AND_LIVE (live_string_p); |
| 5488 break; | 5488 break; |
| 5489 | 5489 |
| 5490 case Lisp_Vectorlike: | 5490 case Lisp_Vectorlike: |
| 5491 #ifdef GC_CHECK_MARKED_OBJECTS | 5491 #ifdef GC_CHECK_MARKED_OBJECTS |
| 5492 m = mem_find (po); | 5492 m = mem_find (po); |
| 5493 if (m == MEM_NIL && !GC_SUBRP (obj) | 5493 if (m == MEM_NIL && !SUBRP (obj) |
| 5494 && po != &buffer_defaults | 5494 && po != &buffer_defaults |
| 5495 && po != &buffer_local_symbols) | 5495 && po != &buffer_local_symbols) |
| 5496 abort (); | 5496 abort (); |
| 5497 #endif /* GC_CHECK_MARKED_OBJECTS */ | 5497 #endif /* GC_CHECK_MARKED_OBJECTS */ |
| 5498 | 5498 |
| 5499 if (GC_BUFFERP (obj)) | 5499 if (BUFFERP (obj)) |
| 5500 { | 5500 { |
| 5501 if (!VECTOR_MARKED_P (XBUFFER (obj))) | 5501 if (!VECTOR_MARKED_P (XBUFFER (obj))) |
| 5502 { | 5502 { |
| 5503 #ifdef GC_CHECK_MARKED_OBJECTS | 5503 #ifdef GC_CHECK_MARKED_OBJECTS |
| 5504 if (po != &buffer_defaults && po != &buffer_local_symbols) | 5504 if (po != &buffer_defaults && po != &buffer_local_symbols) |
| 5511 } | 5511 } |
| 5512 #endif /* GC_CHECK_MARKED_OBJECTS */ | 5512 #endif /* GC_CHECK_MARKED_OBJECTS */ |
| 5513 mark_buffer (obj); | 5513 mark_buffer (obj); |
| 5514 } | 5514 } |
| 5515 } | 5515 } |
| 5516 else if (GC_SUBRP (obj)) | 5516 else if (SUBRP (obj)) |
| 5517 break; | 5517 break; |
| 5518 else if (GC_COMPILEDP (obj)) | 5518 else if (COMPILEDP (obj)) |
| 5519 /* We could treat this just like a vector, but it is better to | 5519 /* We could treat this just like a vector, but it is better to |
| 5520 save the COMPILED_CONSTANTS element for last and avoid | 5520 save the COMPILED_CONSTANTS element for last and avoid |
| 5521 recursion there. */ | 5521 recursion there. */ |
| 5522 { | 5522 { |
| 5523 register struct Lisp_Vector *ptr = XVECTOR (obj); | 5523 register struct Lisp_Vector *ptr = XVECTOR (obj); |
| 5536 mark_object (ptr->contents[i]); | 5536 mark_object (ptr->contents[i]); |
| 5537 } | 5537 } |
| 5538 obj = ptr->contents[COMPILED_CONSTANTS]; | 5538 obj = ptr->contents[COMPILED_CONSTANTS]; |
| 5539 goto loop; | 5539 goto loop; |
| 5540 } | 5540 } |
| 5541 else if (GC_FRAMEP (obj)) | 5541 else if (FRAMEP (obj)) |
| 5542 { | 5542 { |
| 5543 register struct frame *ptr = XFRAME (obj); | 5543 register struct frame *ptr = XFRAME (obj); |
| 5544 | 5544 |
| 5545 if (VECTOR_MARKED_P (ptr)) break; /* Already marked */ | 5545 if (VECTOR_MARKED_P (ptr)) break; /* Already marked */ |
| 5546 VECTOR_MARK (ptr); /* Else mark it */ | 5546 VECTOR_MARK (ptr); /* Else mark it */ |
| 5568 mark_object (ptr->tool_bar_items); | 5568 mark_object (ptr->tool_bar_items); |
| 5569 mark_object (ptr->desired_tool_bar_string); | 5569 mark_object (ptr->desired_tool_bar_string); |
| 5570 mark_object (ptr->current_tool_bar_string); | 5570 mark_object (ptr->current_tool_bar_string); |
| 5571 #endif /* HAVE_WINDOW_SYSTEM */ | 5571 #endif /* HAVE_WINDOW_SYSTEM */ |
| 5572 } | 5572 } |
| 5573 else if (GC_BOOL_VECTOR_P (obj)) | 5573 else if (BOOL_VECTOR_P (obj)) |
| 5574 { | 5574 { |
| 5575 register struct Lisp_Vector *ptr = XVECTOR (obj); | 5575 register struct Lisp_Vector *ptr = XVECTOR (obj); |
| 5576 | 5576 |
| 5577 if (VECTOR_MARKED_P (ptr)) | 5577 if (VECTOR_MARKED_P (ptr)) |
| 5578 break; /* Already marked */ | 5578 break; /* Already marked */ |
| 5579 CHECK_LIVE (live_vector_p); | 5579 CHECK_LIVE (live_vector_p); |
| 5580 VECTOR_MARK (ptr); /* Else mark it */ | 5580 VECTOR_MARK (ptr); /* Else mark it */ |
| 5581 } | 5581 } |
| 5582 else if (GC_WINDOWP (obj)) | 5582 else if (WINDOWP (obj)) |
| 5583 { | 5583 { |
| 5584 register struct Lisp_Vector *ptr = XVECTOR (obj); | 5584 register struct Lisp_Vector *ptr = XVECTOR (obj); |
| 5585 struct window *w = XWINDOW (obj); | 5585 struct window *w = XWINDOW (obj); |
| 5586 register int i; | 5586 register int i; |
| 5587 | 5587 |
| 5609 { | 5609 { |
| 5610 mark_glyph_matrix (w->current_matrix); | 5610 mark_glyph_matrix (w->current_matrix); |
| 5611 mark_glyph_matrix (w->desired_matrix); | 5611 mark_glyph_matrix (w->desired_matrix); |
| 5612 } | 5612 } |
| 5613 } | 5613 } |
| 5614 else if (GC_HASH_TABLE_P (obj)) | 5614 else if (HASH_TABLE_P (obj)) |
| 5615 { | 5615 { |
| 5616 struct Lisp_Hash_Table *h = XHASH_TABLE (obj); | 5616 struct Lisp_Hash_Table *h = XHASH_TABLE (obj); |
| 5617 | 5617 |
| 5618 /* Stop if already marked. */ | 5618 /* Stop if already marked. */ |
| 5619 if (VECTOR_MARKED_P (h)) | 5619 if (VECTOR_MARKED_P (h)) |
| 5638 mark_object (h->user_hash_function); | 5638 mark_object (h->user_hash_function); |
| 5639 mark_object (h->user_cmp_function); | 5639 mark_object (h->user_cmp_function); |
| 5640 | 5640 |
| 5641 /* If hash table is not weak, mark all keys and values. | 5641 /* If hash table is not weak, mark all keys and values. |
| 5642 For weak tables, mark only the vector. */ | 5642 For weak tables, mark only the vector. */ |
| 5643 if (GC_NILP (h->weak)) | 5643 if (NILP (h->weak)) |
| 5644 mark_object (h->key_and_value); | 5644 mark_object (h->key_and_value); |
| 5645 else | 5645 else |
| 5646 VECTOR_MARK (XVECTOR (h->key_and_value)); | 5646 VECTOR_MARK (XVECTOR (h->key_and_value)); |
| 5647 } | 5647 } |
| 5648 else | 5648 else |
| 5862 survives_gc_p (obj) | 5862 survives_gc_p (obj) |
| 5863 Lisp_Object obj; | 5863 Lisp_Object obj; |
| 5864 { | 5864 { |
| 5865 int survives_p; | 5865 int survives_p; |
| 5866 | 5866 |
| 5867 switch (XGCTYPE (obj)) | 5867 switch (XTYPE (obj)) |
| 5868 { | 5868 { |
| 5869 case Lisp_Int: | 5869 case Lisp_Int: |
| 5870 survives_p = 1; | 5870 survives_p = 1; |
| 5871 break; | 5871 break; |
| 5872 | 5872 |
| 5881 case Lisp_String: | 5881 case Lisp_String: |
| 5882 survives_p = STRING_MARKED_P (XSTRING (obj)); | 5882 survives_p = STRING_MARKED_P (XSTRING (obj)); |
| 5883 break; | 5883 break; |
| 5884 | 5884 |
| 5885 case Lisp_Vectorlike: | 5885 case Lisp_Vectorlike: |
| 5886 survives_p = GC_SUBRP (obj) || VECTOR_MARKED_P (XVECTOR (obj)); | 5886 survives_p = SUBRP (obj) || VECTOR_MARKED_P (XVECTOR (obj)); |
| 5887 break; | 5887 break; |
| 5888 | 5888 |
| 5889 case Lisp_Cons: | 5889 case Lisp_Cons: |
| 5890 survives_p = CONS_MARKED_P (XCONS (obj)); | 5890 survives_p = CONS_MARKED_P (XCONS (obj)); |
| 5891 break; | 5891 break; |
