]> git.eshelyaron.com Git - emacs.git/commit
Reinstall recent GC-related changes
authorPaul Eggert <eggert@cs.ucla.edu>
Sat, 5 Sep 2020 19:13:32 +0000 (12:13 -0700)
committerPaul Eggert <eggert@cs.ucla.edu>
Sat, 5 Sep 2020 19:15:14 +0000 (12:15 -0700)
commit6cf62141c4467314f67c2ef75a4bf94d41ff050f
tree15e690c820576893cb9ca5d3f2dd1455dd3f0520
parent940ea1549117f56642fd6830bdbccf8865a932bb
Reinstall recent GC-related changes

The report that they broke macOS was a false alarm, as the
previous commit was also broken (Bug#43152#62).
* src/alloc.c (live_string_holding, live_cons_holding)
(live_symbol_holding):
Count only pointers that point to a struct component,
or are a tagged pointer to the start of the struct.
Exception: for non-bool-vector pseudovectors,
count any pointer past the header, since it’s too much
of a pain to write code for every pseudovector.
(live_float_holding, live_vector_pointer):
New functions, which are similar about counting pointers.
(live_float_p, live_large_vector_holding)
(live_small_vector_pointer, mark_maybe_pointer): Use them.
(mark_maybe_object, mark_maybe_objects): Remove,
and remove all callers; mark_maybe_pointer now suffices.
(mark_objects): New function.
* src/alloc.c (mark_vectorlike, mark_face_cache):
* src/eval.c (mark_specpdl):
* src/fringe.c (mark_fringe_data):
* src/keyboard.c (mark_kboards):
Simplify by using mark_objects.
* src/lisp.h (SAFE_ALLOCA_LISP_EXTRA):
Clear any Lisp_Object arrays large enough to not fit into the stack,
so that GC need not worry about whether they contain objects.
src/alloc.c
src/eval.c
src/fringe.c
src/keyboard.c
src/lisp.h