summaryrefslogtreecommitdiff
path: root/src/comp.c
diff options
context:
space:
mode:
authorAndrea Corallo <akrl@sdf.org>2020-04-26 09:11:33 +0100
committerAndrea Corallo <akrl@sdf.org>2020-04-26 10:10:17 +0100
commitbb4cf13c47a1a24ce83233cc7b77dc87fc274d52 (patch)
tree2ae6445e1d524a04d1103171f0086883a5d96813 /src/comp.c
parent2878624980a116550e8b07acc76a24c373eab342 (diff)
downloademacs-bb4cf13c47a1a24ce83233cc7b77dc87fc274d52.tar.gz
emacs-bb4cf13c47a1a24ce83233cc7b77dc87fc274d52.tar.bz2
emacs-bb4cf13c47a1a24ce83233cc7b77dc87fc274d52.zip
Convert before final function doc hash into a vector.
* lisp/emacs-lisp/comp.el (comp-finalize-relocs): Convert doc hash table into vector befor final. (comp-emit-for-top-level): Rename `comp-ctxt-doc-index-h' -> `comp-ctxt-function-docs'. (comp-ctxt): Likewise. * src/comp.c (native_function_doc): Update logic for documentation being a vector. (emit_ctxt_code): Update for 'comp-ctxt-doc-index-h' slot rename. * src/comp.h (struct Lisp_Native_Comp_Unit): Rename 'data_fdoc_h' into data_fdoc_v. * src/pdumper.c (dump_native_comp_unit): Likewise.
Diffstat (limited to 'src/comp.c')
-rw-r--r--src/comp.c16
1 files changed, 7 insertions, 9 deletions
diff --git a/src/comp.c b/src/comp.c
index b33ef92f72b..d021be479b0 100644
--- a/src/comp.c
+++ b/src/comp.c
@@ -2102,7 +2102,7 @@ emit_ctxt_code (void)
emit_static_object (TEXT_OPTIM_QLY_SYM, Flist (2, opt_qly));
emit_static_object (TEXT_FDOC_SYM,
- CALL1I (comp-ctxt-doc-index-h, Vcomp_ctxt));
+ CALL1I (comp-ctxt-function-docs, Vcomp_ctxt));
comp.current_thread_ref =
gcc_jit_lvalue_as_rvalue (
@@ -3677,14 +3677,12 @@ native_function_doc (Lisp_Object function)
struct Lisp_Native_Comp_Unit *cu =
XNATIVE_COMP_UNIT (Fsubr_native_comp_unit (function));
- if (NILP (cu->data_fdoc_h))
- cu->data_fdoc_h = load_static_obj (cu, TEXT_FDOC_SYM);
-
- eassert (!NILP (cu->data_fdoc_h));
-
- return Fgethash (make_fixnum (XSUBR (function)->doc),
- cu->data_fdoc_h,
- Qnil);
+ if (NILP (cu->data_fdoc_v))
+ cu->data_fdoc_v = load_static_obj (cu, TEXT_FDOC_SYM);
+ if (!VECTORP (cu->data_fdoc_v))
+ xsignal2 (Qnative_lisp_file_inconsistent, cu->file,
+ build_string ("missing documentation vector"));
+ return AREF (cu->data_fdoc_v, XSUBR (function)->doc);
}
DEFUN ("comp--register-subr", Fcomp__register_subr, Scomp__register_subr,