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;