comparison src/alloc.c @ 45392:f3d7ab65641f

* alloc.c (Fmake_symbol): Set symbol xname field instead of name. (mark_object, gc_sweep): Use symbol xname field and XSTRING instead of name field.
author Ken Raeburn <raeburn@raeburn.org>
date Mon, 20 May 2002 08:04:52 +0000
parents 01b93e5e53a7
children 3f111801efb4
comparison
equal deleted inserted replaced
45391:6c875925d507 45392:f3d7ab65641f
2543 } 2543 }
2544 XSETSYMBOL (val, &symbol_block->symbols[symbol_block_index++]); 2544 XSETSYMBOL (val, &symbol_block->symbols[symbol_block_index++]);
2545 } 2545 }
2546 2546
2547 p = XSYMBOL (val); 2547 p = XSYMBOL (val);
2548 p->name = XSTRING (name); 2548 p->xname = name;
2549 p->plist = Qnil; 2549 p->plist = Qnil;
2550 p->value = Qunbound; 2550 p->value = Qunbound;
2551 p->function = Qunbound; 2551 p->function = Qunbound;
2552 p->next = NULL; 2552 p->next = NULL;
2553 p->interned = SYMBOL_UNINTERNED; 2553 p->interned = SYMBOL_UNINTERNED;
4688 XMARK (ptr->plist); 4688 XMARK (ptr->plist);
4689 mark_object ((Lisp_Object *) &ptr->value); 4689 mark_object ((Lisp_Object *) &ptr->value);
4690 mark_object (&ptr->function); 4690 mark_object (&ptr->function);
4691 mark_object (&ptr->plist); 4691 mark_object (&ptr->plist);
4692 4692
4693 if (!PURE_POINTER_P (ptr->name)) 4693 if (!PURE_POINTER_P (XSTRING (ptr->xname)))
4694 MARK_STRING (ptr->name); 4694 MARK_STRING (XSTRING (ptr->xname));
4695 MARK_INTERVAL_TREE (ptr->name->intervals); 4695 MARK_INTERVAL_TREE (XSTRING (ptr->xname)->intervals);
4696 4696
4697 /* Note that we do not mark the obarray of the symbol. 4697 /* Note that we do not mark the obarray of the symbol.
4698 It is safe not to do so because nothing accesses that 4698 It is safe not to do so because nothing accesses that
4699 slot except to check whether it is nil. */ 4699 slot except to check whether it is nil. */
4700 ptr = ptr->next; 4700 ptr = ptr->next;
5161 for (; sym < end; ++sym) 5161 for (; sym < end; ++sym)
5162 { 5162 {
5163 /* Check if the symbol was created during loadup. In such a case 5163 /* Check if the symbol was created during loadup. In such a case
5164 it might be pointed to by pure bytecode which we don't trace, 5164 it might be pointed to by pure bytecode which we don't trace,
5165 so we conservatively assume that it is live. */ 5165 so we conservatively assume that it is live. */
5166 int pure_p = PURE_POINTER_P (sym->name); 5166 int pure_p = PURE_POINTER_P (XSTRING (sym->xname));
5167 5167
5168 if (!XMARKBIT (sym->plist) && !pure_p) 5168 if (!XMARKBIT (sym->plist) && !pure_p)
5169 { 5169 {
5170 *(struct Lisp_Symbol **) &sym->value = symbol_free_list; 5170 *(struct Lisp_Symbol **) &sym->value = symbol_free_list;
5171 symbol_free_list = sym; 5171 symbol_free_list = sym;
5176 } 5176 }
5177 else 5177 else
5178 { 5178 {
5179 ++num_used; 5179 ++num_used;
5180 if (!pure_p) 5180 if (!pure_p)
5181 UNMARK_STRING (sym->name); 5181 UNMARK_STRING (XSTRING (sym->xname));
5182 XUNMARK (sym->plist); 5182 XUNMARK (sym->plist);
5183 } 5183 }
5184 } 5184 }
5185 5185
5186 lim = SYMBOL_BLOCK_SIZE; 5186 lim = SYMBOL_BLOCK_SIZE;