diff options
author | Andrea Corallo <akrl@sdf.org> | 2020-04-25 18:16:17 +0100 |
---|---|---|
committer | Andrea Corallo <akrl@sdf.org> | 2020-04-25 19:55:39 +0100 |
commit | a7fac2e91fb424fcf47ea8a23c218c272dd83434 (patch) | |
tree | 620e5295a71b246e191a7f61c756d9e0f8ad985d /src/comp.c | |
parent | f691af80f1c2073e610a382029790f7c6f97dd5d (diff) | |
download | emacs-a7fac2e91fb424fcf47ea8a23c218c272dd83434.tar.gz emacs-a7fac2e91fb424fcf47ea8a23c218c272dd83434.tar.bz2 emacs-a7fac2e91fb424fcf47ea8a23c218c272dd83434.zip |
Lazy load function documentation.
* src/comp.c (native_function_doc): New function.
(load_comp_unit): Do not load function doc during load.
* src/comp.h: Extern 'native_function_doc'.
* src/doc.c (Fdocumentation): Call 'native_function_doc' to
retrive function doc.
* src/pdumper.c (dump_native_comp_unit): Zero 'data_fdoc_h' before
dumping.
Diffstat (limited to 'src/comp.c')
-rw-r--r-- | src/comp.c | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/src/comp.c b/src/comp.c index 70b0a25a9c0..b33ef92f72b 100644 --- a/src/comp.c +++ b/src/comp.c @@ -3627,7 +3627,6 @@ load_comp_unit (struct Lisp_Native_Comp_Unit *comp_u, bool loading_dump, comp_u->data_vec = load_static_obj (comp_u, TEXT_DATA_RELOC_SYM); comp_u->data_impure_vec = load_static_obj (comp_u, TEXT_DATA_RELOC_IMPURE_SYM); - comp_u->data_fdoc_h = load_static_obj (comp_u, TEXT_FDOC_SYM); if (!NILP (Vpurify_flag)) /* Non impure can be copied into pure space. */ @@ -3672,6 +3671,22 @@ load_comp_unit (struct Lisp_Native_Comp_Unit *comp_u, bool loading_dump, return; } +Lisp_Object +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); +} + DEFUN ("comp--register-subr", Fcomp__register_subr, Scomp__register_subr, 7, 7, 0, doc: /* This gets called by top_level_run during load phase to register |