diff options
| author | Karl Heuer | 1994-02-09 22:04:55 +0000 |
|---|---|---|
| committer | Karl Heuer | 1994-02-09 22:04:55 +0000 |
| commit | 9149e743227187da58be5132fa5254fc9519f089 (patch) | |
| tree | 16394059c4fe6b1d1669360d5d51fdd4c878ffac /src/alloc.c | |
| parent | 98f5cfc3333c7018515b0c75b01bc8342c0eb238 (diff) | |
| download | emacs-9149e743227187da58be5132fa5254fc9519f089.tar.gz emacs-9149e743227187da58be5132fa5254fc9519f089.zip | |
(mark_object): Fetch obj from *objptr at loop, not at the gotos.
Diffstat (limited to 'src/alloc.c')
| -rw-r--r-- | src/alloc.c | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/src/alloc.c b/src/alloc.c index d4c4f3c402f..dffff224d50 100644 --- a/src/alloc.c +++ b/src/alloc.c | |||
| @@ -1475,11 +1475,11 @@ mark_object (objptr) | |||
| 1475 | { | 1475 | { |
| 1476 | register Lisp_Object obj; | 1476 | register Lisp_Object obj; |
| 1477 | 1477 | ||
| 1478 | loop: | ||
| 1478 | obj = *objptr; | 1479 | obj = *objptr; |
| 1480 | loop2: | ||
| 1479 | XUNMARK (obj); | 1481 | XUNMARK (obj); |
| 1480 | 1482 | ||
| 1481 | loop: | ||
| 1482 | |||
| 1483 | if ((PNTR_COMPARISON_TYPE) XPNTR (obj) < (PNTR_COMPARISON_TYPE) ((char *) pure + PURESIZE) | 1483 | if ((PNTR_COMPARISON_TYPE) XPNTR (obj) < (PNTR_COMPARISON_TYPE) ((char *) pure + PURESIZE) |
| 1484 | && (PNTR_COMPARISON_TYPE) XPNTR (obj) >= (PNTR_COMPARISON_TYPE) pure) | 1484 | && (PNTR_COMPARISON_TYPE) XPNTR (obj) >= (PNTR_COMPARISON_TYPE) pure) |
| 1485 | return; | 1485 | return; |
| @@ -1567,7 +1567,6 @@ mark_object (objptr) | |||
| 1567 | mark_object (&ptr1->contents[i]); | 1567 | mark_object (&ptr1->contents[i]); |
| 1568 | } | 1568 | } |
| 1569 | objptr = &ptr1->contents[COMPILED_CONSTANTS]; | 1569 | objptr = &ptr1->contents[COMPILED_CONSTANTS]; |
| 1570 | obj = *objptr; | ||
| 1571 | goto loop; | 1570 | goto loop; |
| 1572 | } | 1571 | } |
| 1573 | 1572 | ||
| @@ -1612,9 +1611,13 @@ mark_object (objptr) | |||
| 1612 | ptr = ptr->next; | 1611 | ptr = ptr->next; |
| 1613 | if (ptr) | 1612 | if (ptr) |
| 1614 | { | 1613 | { |
| 1614 | /* For the benefit of the last_marked log. */ | ||
| 1615 | objptr = (Lisp_Object *)&XSYMBOL (obj)->next; | ||
| 1615 | ptrx = ptr; /* Use of ptrx avoids compiler bug on Sun */ | 1616 | ptrx = ptr; /* Use of ptrx avoids compiler bug on Sun */ |
| 1616 | XSETSYMBOL (obj, ptrx); | 1617 | XSETSYMBOL (obj, ptrx); |
| 1617 | goto loop; | 1618 | /* We can't goto loop here because *objptr doesn't contain an |
| 1619 | actual Lisp_Object with valid datatype field. */ | ||
| 1620 | goto loop2; | ||
| 1618 | } | 1621 | } |
| 1619 | } | 1622 | } |
| 1620 | break; | 1623 | break; |
| @@ -1638,14 +1641,11 @@ mark_object (objptr) | |||
| 1638 | if (EQ (ptr->cdr, Qnil)) | 1641 | if (EQ (ptr->cdr, Qnil)) |
| 1639 | { | 1642 | { |
| 1640 | objptr = &ptr->car; | 1643 | objptr = &ptr->car; |
| 1641 | obj = ptr->car; | ||
| 1642 | XUNMARK (obj); | ||
| 1643 | goto loop; | 1644 | goto loop; |
| 1644 | } | 1645 | } |
| 1645 | mark_object (&ptr->car); | 1646 | mark_object (&ptr->car); |
| 1646 | /* See comment above under Lisp_Vector for why not use ptr here. */ | 1647 | /* See comment above under Lisp_Vector for why not use ptr here. */ |
| 1647 | objptr = &XCONS (obj)->cdr; | 1648 | objptr = &XCONS (obj)->cdr; |
| 1648 | obj = ptr->cdr; | ||
| 1649 | goto loop; | 1649 | goto loop; |
| 1650 | } | 1650 | } |
| 1651 | 1651 | ||