1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2024-11-24 07:20:37 +00:00

(mark_object): Fetch obj from *objptr at loop, not at the gotos.

This commit is contained in:
Karl Heuer 1994-02-09 22:04:55 +00:00
parent 98f5cfc333
commit 9149e74322

View File

@ -1475,10 +1475,10 @@ mark_object (objptr)
{
register Lisp_Object obj;
obj = *objptr;
XUNMARK (obj);
loop:
obj = *objptr;
loop2:
XUNMARK (obj);
if ((PNTR_COMPARISON_TYPE) XPNTR (obj) < (PNTR_COMPARISON_TYPE) ((char *) pure + PURESIZE)
&& (PNTR_COMPARISON_TYPE) XPNTR (obj) >= (PNTR_COMPARISON_TYPE) pure)
@ -1567,7 +1567,6 @@ mark_object (objptr)
mark_object (&ptr1->contents[i]);
}
objptr = &ptr1->contents[COMPILED_CONSTANTS];
obj = *objptr;
goto loop;
}
@ -1612,9 +1611,13 @@ mark_object (objptr)
ptr = ptr->next;
if (ptr)
{
/* For the benefit of the last_marked log. */
objptr = (Lisp_Object *)&XSYMBOL (obj)->next;
ptrx = ptr; /* Use of ptrx avoids compiler bug on Sun */
XSETSYMBOL (obj, ptrx);
goto loop;
/* We can't goto loop here because *objptr doesn't contain an
actual Lisp_Object with valid datatype field. */
goto loop2;
}
}
break;
@ -1638,14 +1641,11 @@ mark_object (objptr)
if (EQ (ptr->cdr, Qnil))
{
objptr = &ptr->car;
obj = ptr->car;
XUNMARK (obj);
goto loop;
}
mark_object (&ptr->car);
/* See comment above under Lisp_Vector for why not use ptr here. */
objptr = &XCONS (obj)->cdr;
obj = ptr->cdr;
goto loop;
}