aboutsummaryrefslogtreecommitdiffstats
path: root/src/alloc.c
diff options
context:
space:
mode:
authorKarl Heuer1994-02-09 22:04:55 +0000
committerKarl Heuer1994-02-09 22:04:55 +0000
commit9149e743227187da58be5132fa5254fc9519f089 (patch)
tree16394059c4fe6b1d1669360d5d51fdd4c878ffac /src/alloc.c
parent98f5cfc3333c7018515b0c75b01bc8342c0eb238 (diff)
downloademacs-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.c14
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