summaryrefslogtreecommitdiff
path: root/src/alloc.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/alloc.c')
-rw-r--r--src/alloc.c18
1 files changed, 4 insertions, 14 deletions
diff --git a/src/alloc.c b/src/alloc.c
index b44b90e558a..ae3e1519c04 100644
--- a/src/alloc.c
+++ b/src/alloc.c
@@ -3276,13 +3276,7 @@ sweep_vectors (void)
VECTOR_UNMARK (vector);
total_vectors++;
if (vector->header.size & PSEUDOVECTOR_FLAG)
- {
- /* All non-bool pseudovectors are small enough to be allocated
- from vector blocks. This code should be redesigned if some
- pseudovector type grows beyond VBLOCK_BYTES_MAX. */
- eassert (PSEUDOVECTOR_TYPEP (&vector->header, PVEC_BOOL_VECTOR));
- total_vector_slots += vector_nbytes (vector) / word_size;
- }
+ total_vector_slots += vector_nbytes (vector) / word_size;
else
total_vector_slots
+= header_size / word_size + vector->header.size;
@@ -4648,7 +4642,7 @@ live_vector_p (struct mem_node *m, void *p)
&& vector <= (struct Lisp_Vector *) p)
{
if (!PSEUDOVECTOR_TYPEP (&vector->header, PVEC_FREE) && vector == p)
- return 1;
+ return true;
else
vector = ADVANCE (vector, vector_nbytes (vector));
}
@@ -6385,7 +6379,6 @@ mark_object (Lisp_Object arg)
case Lisp_Vectorlike:
{
register struct Lisp_Vector *ptr = XVECTOR (obj);
- register ptrdiff_t pvectype;
if (VECTOR_MARKED_P (ptr))
break;
@@ -6396,11 +6389,8 @@ mark_object (Lisp_Object arg)
emacs_abort ();
#endif /* GC_CHECK_MARKED_OBJECTS */
- if (ptr->header.size & PSEUDOVECTOR_FLAG)
- pvectype = ((ptr->header.size & PVEC_TYPE_MASK)
- >> PSEUDOVECTOR_AREA_BITS);
- else
- pvectype = PVEC_NORMAL_VECTOR;
+ enum pvec_type pvectype
+ = PSEUDOVECTOR_TYPE (ptr);
if (pvectype != PVEC_SUBR
&& pvectype != PVEC_BUFFER