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.
This commit is contained in:
parent
6a182658a5
commit
462d8ba813
17 changed files with 499 additions and 226 deletions
|
@ -747,9 +747,13 @@ A FUNC form can have any number of `:no-eval' (or `:no-value'),
|
|||
(intern
|
||||
:eval (intern "abc"))
|
||||
(intern-soft
|
||||
:eval (intern-soft "list")
|
||||
:eval (intern-soft "Phooey!"))
|
||||
(make-symbol
|
||||
:eval (make-symbol "abc"))
|
||||
(gensym
|
||||
:no-eval (gensym)
|
||||
:eg-result g37)
|
||||
"Comparing symbols"
|
||||
(eq
|
||||
:eval (eq 'abc 'abc)
|
||||
|
@ -760,7 +764,20 @@ A FUNC form can have any number of `:no-eval' (or `:no-value'),
|
|||
:eval (equal 'abc 'abc))
|
||||
"Name"
|
||||
(symbol-name
|
||||
:eval (symbol-name 'abc)))
|
||||
:eval (symbol-name 'abc))
|
||||
"Obarrays"
|
||||
(obarray-make
|
||||
:eval (obarray-make))
|
||||
(obarrayp
|
||||
:eval (obarrayp (obarray-make))
|
||||
:eval (obarrayp nil))
|
||||
(unintern
|
||||
:no-eval (unintern "abc" my-obarray)
|
||||
:eg-result t)
|
||||
(mapatoms
|
||||
:no-eval (mapatoms (lambda (symbol) (print symbol)) my-obarray))
|
||||
(obarray-clear
|
||||
:no-eval (obarray-clear my-obarray)))
|
||||
|
||||
(define-short-documentation-group comparison
|
||||
"General-purpose"
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue