diff options
| author | Andrea Corallo | 2020-04-25 18:16:17 +0100 |
|---|---|---|
| committer | Andrea Corallo | 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.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, | |||
| 3627 | comp_u->data_vec = load_static_obj (comp_u, TEXT_DATA_RELOC_SYM); | 3627 | comp_u->data_vec = load_static_obj (comp_u, TEXT_DATA_RELOC_SYM); |
| 3628 | comp_u->data_impure_vec = | 3628 | comp_u->data_impure_vec = |
| 3629 | load_static_obj (comp_u, TEXT_DATA_RELOC_IMPURE_SYM); | 3629 | load_static_obj (comp_u, TEXT_DATA_RELOC_IMPURE_SYM); |
| 3630 | comp_u->data_fdoc_h = load_static_obj (comp_u, TEXT_FDOC_SYM); | ||
| 3631 | 3630 | ||
| 3632 | if (!NILP (Vpurify_flag)) | 3631 | if (!NILP (Vpurify_flag)) |
| 3633 | /* Non impure can be copied into pure space. */ | 3632 | /* 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, | |||
| 3672 | return; | 3671 | return; |
| 3673 | } | 3672 | } |
| 3674 | 3673 | ||
| 3674 | Lisp_Object | ||
| 3675 | native_function_doc (Lisp_Object function) | ||
| 3676 | { | ||
| 3677 | struct Lisp_Native_Comp_Unit *cu = | ||
| 3678 | XNATIVE_COMP_UNIT (Fsubr_native_comp_unit (function)); | ||
| 3679 | |||
| 3680 | if (NILP (cu->data_fdoc_h)) | ||
| 3681 | cu->data_fdoc_h = load_static_obj (cu, TEXT_FDOC_SYM); | ||
| 3682 | |||
| 3683 | eassert (!NILP (cu->data_fdoc_h)); | ||
| 3684 | |||
| 3685 | return Fgethash (make_fixnum (XSUBR (function)->doc), | ||
| 3686 | cu->data_fdoc_h, | ||
| 3687 | Qnil); | ||
| 3688 | } | ||
| 3689 | |||
| 3675 | DEFUN ("comp--register-subr", Fcomp__register_subr, Scomp__register_subr, | 3690 | DEFUN ("comp--register-subr", Fcomp__register_subr, Scomp__register_subr, |
| 3676 | 7, 7, 0, | 3691 | 7, 7, 0, |
| 3677 | doc: /* This gets called by top_level_run during load phase to register | 3692 | doc: /* This gets called by top_level_run during load phase to register |