comparison src/alloc.c @ 9295:17d393a8eed6

(free_float, make_float, free_cons, Flist, Fvector, Fmake_byte_code, make_pure_float, mark_object, gc_sweep): Don't use XFASTINT as an lvalue.
author Karl Heuer <kwzh@gnu.org>
date Tue, 04 Oct 1994 15:31:18 +0000
parents e5ba7993d378
children 36dea2dad76c
comparison
equal deleted inserted replaced
9294:4d083b72b3b1 9295:17d393a8eed6
433 433
434 /* Explicitly free a float cell. */ 434 /* Explicitly free a float cell. */
435 free_float (ptr) 435 free_float (ptr)
436 struct Lisp_Float *ptr; 436 struct Lisp_Float *ptr;
437 { 437 {
438 XFASTINT (ptr->type) = (EMACS_INT) float_free_list; 438 XSETFASTINT (ptr->type, (EMACS_INT) float_free_list);
439 float_free_list = ptr; 439 float_free_list = ptr;
440 } 440 }
441 441
442 Lisp_Object 442 Lisp_Object
443 make_float (float_value) 443 make_float (float_value)
461 float_block_index = 0; 461 float_block_index = 0;
462 } 462 }
463 XSETFLOAT (val, &float_block->floats[float_block_index++]); 463 XSETFLOAT (val, &float_block->floats[float_block_index++]);
464 } 464 }
465 XFLOAT (val)->data = float_value; 465 XFLOAT (val)->data = float_value;
466 XFASTINT (XFLOAT (val)->type) = 0; /* bug chasing -wsr */ 466 XSETFASTINT (XFLOAT (val)->type, 0); /* bug chasing -wsr */
467 consing_since_gc += sizeof (struct Lisp_Float); 467 consing_since_gc += sizeof (struct Lisp_Float);
468 return val; 468 return val;
469 } 469 }
470 470
471 #endif /* LISP_FLOAT_TYPE */ 471 #endif /* LISP_FLOAT_TYPE */
506 506
507 /* Explicitly free a cons cell. */ 507 /* Explicitly free a cons cell. */
508 free_cons (ptr) 508 free_cons (ptr)
509 struct Lisp_Cons *ptr; 509 struct Lisp_Cons *ptr;
510 { 510 {
511 XFASTINT (ptr->car) = (EMACS_INT) cons_free_list; 511 XSETFASTINT (ptr->car, (EMACS_INT) cons_free_list);
512 cons_free_list = ptr; 512 cons_free_list = ptr;
513 } 513 }
514 514
515 DEFUN ("cons", Fcons, Scons, 2, 2, 0, 515 DEFUN ("cons", Fcons, Scons, 2, 2, 0,
516 "Create a new cons, give it CAR and CDR as components, and return it.") 516 "Create a new cons, give it CAR and CDR as components, and return it.")
549 int nargs; 549 int nargs;
550 register Lisp_Object *args; 550 register Lisp_Object *args;
551 { 551 {
552 register Lisp_Object len, val, val_tail; 552 register Lisp_Object len, val, val_tail;
553 553
554 XFASTINT (len) = nargs; 554 XSETFASTINT (len, nargs);
555 val = Fmake_list (len, Qnil); 555 val = Fmake_list (len, Qnil);
556 val_tail = val; 556 val_tail = val;
557 while (!NILP (val_tail)) 557 while (!NILP (val_tail))
558 { 558 {
559 XCONS (val_tail)->car = *args++; 559 XCONS (val_tail)->car = *args++;
623 { 623 {
624 register Lisp_Object len, val; 624 register Lisp_Object len, val;
625 register int index; 625 register int index;
626 register struct Lisp_Vector *p; 626 register struct Lisp_Vector *p;
627 627
628 XFASTINT (len) = nargs; 628 XSETFASTINT (len, nargs);
629 val = Fmake_vector (len, Qnil); 629 val = Fmake_vector (len, Qnil);
630 p = XVECTOR (val); 630 p = XVECTOR (val);
631 for (index = 0; index < nargs; index++) 631 for (index = 0; index < nargs; index++)
632 p->contents[index] = args[index]; 632 p->contents[index] = args[index];
633 return val; 633 return val;
645 { 645 {
646 register Lisp_Object len, val; 646 register Lisp_Object len, val;
647 register int index; 647 register int index;
648 register struct Lisp_Vector *p; 648 register struct Lisp_Vector *p;
649 649
650 XFASTINT (len) = nargs; 650 XSETFASTINT (len, nargs);
651 if (!NILP (Vpurify_flag)) 651 if (!NILP (Vpurify_flag))
652 val = make_pure_vector (len); 652 val = make_pure_vector (len);
653 else 653 else
654 val = Fmake_vector (len, Qnil); 654 val = Fmake_vector (len, Qnil);
655 p = XVECTOR (val); 655 p = XVECTOR (val);
1078 if (pureptr + sizeof (struct Lisp_Float) > PURESIZE) 1078 if (pureptr + sizeof (struct Lisp_Float) > PURESIZE)
1079 error ("Pure Lisp storage exhausted"); 1079 error ("Pure Lisp storage exhausted");
1080 XSETFLOAT (new, PUREBEG + pureptr); 1080 XSETFLOAT (new, PUREBEG + pureptr);
1081 pureptr += sizeof (struct Lisp_Float); 1081 pureptr += sizeof (struct Lisp_Float);
1082 XFLOAT (new)->data = num; 1082 XFLOAT (new)->data = num;
1083 XFASTINT (XFLOAT (new)->type) = 0; /* bug chasing -wsr */ 1083 XSETFASTINT (XFLOAT (new)->type, 0); /* bug chasing -wsr */
1084 return new; 1084 return new;
1085 } 1085 }
1086 1086
1087 #endif /* LISP_FLOAT_TYPE */ 1087 #endif /* LISP_FLOAT_TYPE */
1088 1088
1498 includes MARKBIT, put it in the low bit 1498 includes MARKBIT, put it in the low bit
1499 when we store OBJPTR into the size field. */ 1499 when we store OBJPTR into the size field. */
1500 1500
1501 if (XMARKBIT (*objptr)) 1501 if (XMARKBIT (*objptr))
1502 { 1502 {
1503 XFASTINT (*objptr) = ptr->size; 1503 XSETFASTINT (*objptr, ptr->size);
1504 XMARK (*objptr); 1504 XMARK (*objptr);
1505 } 1505 }
1506 else 1506 else
1507 XFASTINT (*objptr) = ptr->size; 1507 XSETFASTINT (*objptr, ptr->size);
1508 if ((EMACS_INT) objptr & 1) abort (); 1508 if ((EMACS_INT) objptr & 1) abort ();
1509 ptr->size = (EMACS_INT) objptr & ~MARKBIT; 1509 ptr->size = (EMACS_INT) objptr & ~MARKBIT;
1510 if ((EMACS_INT) objptr & MARKBIT) 1510 if ((EMACS_INT) objptr & MARKBIT)
1511 ptr->size ++; 1511 ptr->size ++;
1512 } 1512 }
1729 { 1729 {
1730 register int i; 1730 register int i;
1731 for (i = 0; i < lim; i++) 1731 for (i = 0; i < lim; i++)
1732 if (!XMARKBIT (cblk->conses[i].car)) 1732 if (!XMARKBIT (cblk->conses[i].car))
1733 { 1733 {
1734 XFASTINT (cblk->conses[i].car) = (EMACS_INT) cons_free_list; 1734 XSETFASTINT (cblk->conses[i].car, (EMACS_INT) cons_free_list);
1735 num_free++; 1735 num_free++;
1736 cons_free_list = &cblk->conses[i]; 1736 cons_free_list = &cblk->conses[i];
1737 } 1737 }
1738 else 1738 else
1739 { 1739 {
1759 { 1759 {
1760 register int i; 1760 register int i;
1761 for (i = 0; i < lim; i++) 1761 for (i = 0; i < lim; i++)
1762 if (!XMARKBIT (fblk->floats[i].type)) 1762 if (!XMARKBIT (fblk->floats[i].type))
1763 { 1763 {
1764 XFASTINT (fblk->floats[i].type) = (EMACS_INT) float_free_list; 1764 XSETFASTINT (fblk->floats[i].type, (EMACS_INT) float_free_list);
1765 num_free++; 1765 num_free++;
1766 float_free_list = &fblk->floats[i]; 1766 float_free_list = &fblk->floats[i];
1767 } 1767 }
1768 else 1768 else
1769 { 1769 {
1823 { 1823 {
1824 register int i; 1824 register int i;
1825 for (i = 0; i < lim; i++) 1825 for (i = 0; i < lim; i++)
1826 if (!XMARKBIT (sblk->symbols[i].plist)) 1826 if (!XMARKBIT (sblk->symbols[i].plist))
1827 { 1827 {
1828 XFASTINT (sblk->symbols[i].value) = (EMACS_INT) symbol_free_list; 1828 XSETFASTINT (sblk->symbols[i].value, (EMACS_INT) symbol_free_list);
1829 symbol_free_list = &sblk->symbols[i]; 1829 symbol_free_list = &sblk->symbols[i];
1830 num_free++; 1830 num_free++;
1831 } 1831 }
1832 else 1832 else
1833 { 1833 {
1861 { 1861 {
1862 Lisp_Object tem; 1862 Lisp_Object tem;
1863 tem1 = &mblk->markers[i]; /* tem1 avoids Sun compiler bug */ 1863 tem1 = &mblk->markers[i]; /* tem1 avoids Sun compiler bug */
1864 XSETMARKER (tem, tem1); 1864 XSETMARKER (tem, tem1);
1865 unchain_marker (tem); 1865 unchain_marker (tem);
1866 XFASTINT (mblk->markers[i].chain) = (EMACS_INT) marker_free_list; 1866 XSETFASTINT (mblk->markers[i].chain, (EMACS_INT) marker_free_list);
1867 marker_free_list = &mblk->markers[i]; 1867 marker_free_list = &mblk->markers[i];
1868 num_free++; 1868 num_free++;
1869 } 1869 }
1870 else 1870 else
1871 { 1871 {