Mercurial > emacs
changeset 5868:a7bd57a60cb8
(mark_object): Fetch obj from *objptr at loop, not at the gotos.
author | Karl Heuer <kwzh@gnu.org> |
---|---|
date | Wed, 09 Feb 1994 22:04:55 +0000 |
parents | 907e14c58c65 |
children | 91dcabd87088 |
files | src/alloc.c |
diffstat | 1 files changed, 7 insertions(+), 7 deletions(-) [+] |
line wrap: on
line diff
--- a/src/alloc.c Wed Feb 09 21:08:01 1994 +0000 +++ b/src/alloc.c Wed Feb 09 22:04:55 1994 +0000 @@ -1475,11 +1475,11 @@ { register Lisp_Object obj; + loop: obj = *objptr; + loop2: XUNMARK (obj); - loop: - if ((PNTR_COMPARISON_TYPE) XPNTR (obj) < (PNTR_COMPARISON_TYPE) ((char *) pure + PURESIZE) && (PNTR_COMPARISON_TYPE) XPNTR (obj) >= (PNTR_COMPARISON_TYPE) pure) return; @@ -1567,7 +1567,6 @@ mark_object (&ptr1->contents[i]); } objptr = &ptr1->contents[COMPILED_CONSTANTS]; - obj = *objptr; goto loop; } @@ -1612,9 +1611,13 @@ 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 @@ 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; }