Mercurial > emacs
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 { |
