diff options
author | Paul Eggert <eggert@cs.ucla.edu> | 2020-08-30 23:40:11 -0700 |
---|---|---|
committer | Paul Eggert <eggert@cs.ucla.edu> | 2020-08-31 00:05:56 -0700 |
commit | cf95bb0213908a4caab65dccfa67b4f1572babe2 (patch) | |
tree | b1947e6458d3c6fb992320deee00884c80b2c949 /lisp/emacs-lisp/shadow.el | |
parent | aa1b586a1afaa88e5a9521a7640feefc2c12f009 (diff) | |
download | emacs-cf95bb0213908a4caab65dccfa67b4f1572babe2.tar.gz emacs-cf95bb0213908a4caab65dccfa67b4f1572babe2.tar.bz2 emacs-cf95bb0213908a4caab65dccfa67b4f1572babe2.zip |
Avoid some false matches in mark_maybe_pointer
This lets Emacs avoid marking some garbage as if it were in use.
On one test platform (RHEL 7.8, Intel Xeon Silver 4116) it
sped up ‘cd lisp; make compile-always’ by a bit over 1%.
* src/alloc.c (live_string_holding, live_cons_holding)
(live_symbol_holding, live_large_vector_holding)
(live_small_vector_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_vector_pointer): New function.
Diffstat (limited to 'lisp/emacs-lisp/shadow.el')
0 files changed, 0 insertions, 0 deletions