aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKarl Heuer1994-11-18 06:49:09 +0000
committerKarl Heuer1994-11-18 06:49:09 +0000
commit76437631034878f5a3ee9bd0bf58c8367708af4c (patch)
tree1d3e76dd72b71881a4bebf642e59740703cd2a7b
parente958fd9aca5fcf723f3552b109467c07a7f02649 (diff)
downloademacs-76437631034878f5a3ee9bd0bf58c8367708af4c.tar.gz
emacs-76437631034878f5a3ee9bd0bf58c8367708af4c.zip
(Fpurecopy): Use type test macros.
(mark_object): Use the new pseudovector convention.
-rw-r--r--src/alloc.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/src/alloc.c b/src/alloc.c
index 02587c6d906..293fc8bc914 100644
--- a/src/alloc.c
+++ b/src/alloc.c
@@ -1522,10 +1522,9 @@ mark_object (objptr)
1522 } 1522 }
1523 break; 1523 break;
1524 1524
1525 case Lisp_Vector: 1525 case Lisp_Vectorlike:
1526 case Lisp_Window: 1526 case Lisp_Window:
1527 case Lisp_Process: 1527 case Lisp_Process:
1528 case Lisp_Window_Configuration:
1529 { 1528 {
1530 register struct Lisp_Vector *ptr = XVECTOR (obj); 1529 register struct Lisp_Vector *ptr = XVECTOR (obj);
1531 register EMACS_INT size = ptr->size; 1530 register EMACS_INT size = ptr->size;
@@ -1538,9 +1537,11 @@ mark_object (objptr)
1538 struct Lisp_Vector *volatile ptr1 = ptr; 1537 struct Lisp_Vector *volatile ptr1 = ptr;
1539 register int i; 1538 register int i;
1540 1539
1541 if (size & ARRAY_MARK_FLAG) break; /* Already marked */ 1540 if (size & ARRAY_MARK_FLAG) break; /* Already marked */
1542 ptr->size |= ARRAY_MARK_FLAG; /* Else mark it */ 1541 ptr->size |= ARRAY_MARK_FLAG; /* Else mark it */
1543 for (i = 0; i < size; i++) /* and then mark its elements */ 1542 if (size & PSEUDOVECTOR_FLAG)
1543 size &= PSEUDOVECTOR_SIZE_MASK;
1544 for (i = 0; i < size; i++) /* and then mark its elements */
1544 mark_object (&ptr1->contents[i]); 1545 mark_object (&ptr1->contents[i]);
1545 } 1546 }
1546 break; 1547 break;