Simplify mark_object for pseudovectors
Suggested by Pip Cet (Bug#32405#14). * src/alloc.c (mark_object): Remove unnecessary special cases for PVEC_MARKER, PVEC_BOOL_VECTOR, PVEC_MISC_PTR, PVEC_USER_PTR, and PVEC_FINALIZER. change is to free up an enum Lisp_Type tag value, a scarce
This commit is contained in:
parent
d614e4a8cd
commit
6c12f4e63f
2 changed files with 5 additions and 19 deletions
20
src/alloc.c
20
src/alloc.c
|
@ -6495,28 +6495,10 @@ mark_object (Lisp_Object arg)
|
|||
mark_char_table (ptr, (enum pvec_type) pvectype);
|
||||
break;
|
||||
|
||||
case PVEC_MARKER:
|
||||
/* DO NOT mark thru the marker's chain.
|
||||
The buffer's markers chain does not preserve markers from gc;
|
||||
instead, markers are removed from the chain when freed by gc. */
|
||||
case PVEC_BOOL_VECTOR:
|
||||
case PVEC_MISC_PTR:
|
||||
#ifdef HAVE_MODULES
|
||||
case PVEC_USER_PTR:
|
||||
#endif
|
||||
/* No Lisp_Objects to mark in these. */
|
||||
VECTOR_MARK (ptr);
|
||||
break;
|
||||
|
||||
case PVEC_OVERLAY:
|
||||
mark_overlay (XOVERLAY (obj));
|
||||
break;
|
||||
|
||||
case PVEC_FINALIZER:
|
||||
VECTOR_MARK (ptr);
|
||||
mark_object (XFINALIZER (obj)->function);
|
||||
break;
|
||||
|
||||
case PVEC_SUBR:
|
||||
break;
|
||||
|
||||
|
@ -6524,6 +6506,8 @@ mark_object (Lisp_Object arg)
|
|||
emacs_abort ();
|
||||
|
||||
default:
|
||||
/* A regular vector, or a pseudovector needing no special
|
||||
treatment. */
|
||||
mark_vectorlike (ptr);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2264,7 +2264,9 @@ struct Lisp_Marker
|
|||
does not point anywhere. */
|
||||
|
||||
/* For markers that point somewhere,
|
||||
this is used to chain of all the markers in a given buffer. */
|
||||
this is used to chain of all the markers in a given buffer.
|
||||
The chain does not preserve markers from garbage collection;
|
||||
instead, markers are removed from the chain when freed by GC. */
|
||||
/* We could remove it and use an array in buffer_text instead.
|
||||
That would also allow us to preserve it ordered. */
|
||||
struct Lisp_Marker *next;
|
||||
|
|
Loading…
Add table
Reference in a new issue