]> git.eshelyaron.com Git - emacs.git/commit
Add a proper type for obarrays
authorMattias EngdegÄrd <mattiase@acm.org>
Sat, 10 Feb 2024 20:14:09 +0000 (21:14 +0100)
committerEshel Yaron <me@eshelyaron.com>
Wed, 28 Feb 2024 17:42:14 +0000 (18:42 +0100)
commit54978c3a632ae8732fa02e01e2fe1bff078e7067
treec3993c7ae0890aa12d551d0dabd62affba6b7ceb
parent22a93e9a7b6024cb835da9227fec9ca7d021af44
Add a proper type for obarrays

The new opaque type replaces the previous use of vectors for obarrays.
`obarray-make` now returns objects of this type.  Functions that take
obarrays continue to accept vectors for compatibility, now just using
their first slot to store an actual obarray object.

obarray-size and obarray-default-size now obsolete.

* lisp/obarray.el (obarray-default-size, obarray-size):
Declare obsolete.
(obarray-make, obarrayp, obarray-clear): Remove from here.
* src/fns.c (reduce_emacs_uint_to_hash_hash): Remove from here.
* src/lisp.h (struct Lisp_Obarray, OBARRAYP, XOBARRAY, CHECK_OBARRAY)
(make_lisp_obarray, obarray_size, check_obarray)
(obarray_iter_t, make_obarray_iter, obarray_iter_at_end)
(obarray_iter_step, obarray_iter_symbol, DOOBARRAY, knuth_hash): New.
(reduce_emacs_uint_to_hash_hash): Moved here.
* src/lread.c (check_obarray): Renamed and reworked as...
(checked_obarray_slow): ...this.
(intern_sym, Funintern, oblookup, map_obarray)
(Finternal__obarray_buckets): Adapt to new type.
(obarray_index, allocate_obarray, make_obarray, grow_obarray)
(obarray_default_bits, Fobarray_make, Fobarrayp, Fobarray_clear): New.
* etc/emacs_lldb.py (Lisp_Object):
* lisp/emacs-lisp/cl-macs.el (`(,type . ,pred)):
* lisp/emacs-lisp/cl-preloaded.el (cl--typeof-types):
* lisp/emacs-lisp/comp-common.el (comp-known-type-specifiers):
* lisp/emacs-lisp/comp.el (comp-known-predicates):
* src/alloc.c (cleanup_vector, process_mark_stack):
* src/data.c (Ftype_of, syms_of_data):
* src/minibuf.c (Ftry_completion, Fall_completions, Ftest_completion):
* src/pdumper.c (dump_obarray_buckets, dump_obarray, dump_vectorlike):
* src/print.c (print_vectorlike_unreadable):
* test/lisp/abbrev-tests.el (abbrev-make-abbrev-table-test):
* test/lisp/obarray-tests.el (obarrayp-test)
(obarrayp-unchecked-content-test, obarray-make-default-test)
(obarray-make-with-size-test):
Adapt to new type.

(cherry picked from commit 462d8ba813e07a25b71f5c1b38810a29e21f784c)
17 files changed:
etc/emacs_lldb.py
lisp/emacs-lisp/cl-macs.el
lisp/emacs-lisp/cl-preloaded.el
lisp/emacs-lisp/comp-common.el
lisp/emacs-lisp/comp.el
lisp/emacs-lisp/shortdoc.el
lisp/obarray.el
src/alloc.c
src/data.c
src/fns.c
src/lisp.h
src/lread.c
src/minibuf.c
src/pdumper.c
src/print.c
test/lisp/abbrev-tests.el
test/lisp/obarray-tests.el