diff options
| author | Andrea Corallo | 2020-10-12 22:11:06 +0200 |
|---|---|---|
| committer | Andrea Corallo | 2020-10-14 11:04:36 +0200 |
| commit | 8861ee8b087b4e5d9ac9186a2c2d8e44b07fc186 (patch) | |
| tree | cdee0aeb80bbbc7454bbe6475a743bfd12ee9ae8 /src | |
| parent | 4bea0c0b1d907d676cc9abc8d7048103c10b8d79 (diff) | |
| download | emacs-8861ee8b087b4e5d9ac9186a2c2d8e44b07fc186.tar.gz emacs-8861ee8b087b4e5d9ac9186a2c2d8e44b07fc186.zip | |
Have `native-elisp-load' return the last registerd function
* lisp/emacs-lisp/comp.el (comp-emit-for-top-level): Synthesize
'top_level_run' so it returns the last value returned by
`comp--register-subr'.
* src/comp.c (load_comp_unit): Return what 'top_level_run'
returns.
(Fnative_elisp_load): Return what 'load_comp_unit' returns.
* src/comp.h (load_comp_unit): Update signature.
Diffstat (limited to 'src')
| -rw-r--r-- | src/comp.c | 11 | ||||
| -rw-r--r-- | src/comp.h | 4 |
2 files changed, 7 insertions, 8 deletions
diff --git a/src/comp.c b/src/comp.c index 0b5a49fd1f1..f80172e89bf 100644 --- a/src/comp.c +++ b/src/comp.c | |||
| @@ -4768,10 +4768,11 @@ unset_cu_load_ongoing (Lisp_Object comp_u) | |||
| 4768 | XNATIVE_COMP_UNIT (comp_u)->load_ongoing = false; | 4768 | XNATIVE_COMP_UNIT (comp_u)->load_ongoing = false; |
| 4769 | } | 4769 | } |
| 4770 | 4770 | ||
| 4771 | void | 4771 | Lisp_Object |
| 4772 | load_comp_unit (struct Lisp_Native_Comp_Unit *comp_u, bool loading_dump, | 4772 | load_comp_unit (struct Lisp_Native_Comp_Unit *comp_u, bool loading_dump, |
| 4773 | bool late_load) | 4773 | bool late_load) |
| 4774 | { | 4774 | { |
| 4775 | Lisp_Object res = Qnil; | ||
| 4775 | dynlib_handle_ptr handle = comp_u->handle; | 4776 | dynlib_handle_ptr handle = comp_u->handle; |
| 4776 | Lisp_Object comp_u_lisp_obj; | 4777 | Lisp_Object comp_u_lisp_obj; |
| 4777 | XSETNATIVE_COMP_UNIT (comp_u_lisp_obj, comp_u); | 4778 | XSETNATIVE_COMP_UNIT (comp_u_lisp_obj, comp_u); |
| @@ -4897,7 +4898,7 @@ load_comp_unit (struct Lisp_Native_Comp_Unit *comp_u, bool loading_dump, | |||
| 4897 | } | 4898 | } |
| 4898 | /* Executing this will perform all the expected environment | 4899 | /* Executing this will perform all the expected environment |
| 4899 | modifications. */ | 4900 | modifications. */ |
| 4900 | top_level_run (comp_u_lisp_obj); | 4901 | res = top_level_run (comp_u_lisp_obj); |
| 4901 | /* Make sure data_ephemeral_vec still exists after top_level_run has run. | 4902 | /* Make sure data_ephemeral_vec still exists after top_level_run has run. |
| 4902 | Guard against sibling call optimization (or any other). */ | 4903 | Guard against sibling call optimization (or any other). */ |
| 4903 | data_ephemeral_vec = data_ephemeral_vec; | 4904 | data_ephemeral_vec = data_ephemeral_vec; |
| @@ -4910,7 +4911,7 @@ load_comp_unit (struct Lisp_Native_Comp_Unit *comp_u, bool loading_dump, | |||
| 4910 | 4911 | ||
| 4911 | register_native_comp_unit (comp_u_lisp_obj); | 4912 | register_native_comp_unit (comp_u_lisp_obj); |
| 4912 | 4913 | ||
| 4913 | return; | 4914 | return res; |
| 4914 | } | 4915 | } |
| 4915 | 4916 | ||
| 4916 | Lisp_Object | 4917 | Lisp_Object |
| @@ -5090,9 +5091,7 @@ DEFUN ("native-elisp-load", Fnative_elisp_load, Snative_elisp_load, 1, 2, 0, | |||
| 5090 | comp_u->data_vec = Qnil; | 5091 | comp_u->data_vec = Qnil; |
| 5091 | comp_u->lambda_gc_guard_h = CALLN (Fmake_hash_table, QCtest, Qeq); | 5092 | comp_u->lambda_gc_guard_h = CALLN (Fmake_hash_table, QCtest, Qeq); |
| 5092 | comp_u->lambda_c_name_idx_h = CALLN (Fmake_hash_table, QCtest, Qequal); | 5093 | comp_u->lambda_c_name_idx_h = CALLN (Fmake_hash_table, QCtest, Qequal); |
| 5093 | load_comp_unit (comp_u, false, !NILP (late_load)); | 5094 | return load_comp_unit (comp_u, false, !NILP (late_load)); |
| 5094 | |||
| 5095 | return Qt; | ||
| 5096 | } | 5095 | } |
| 5097 | 5096 | ||
| 5098 | #endif /* HAVE_NATIVE_COMP */ | 5097 | #endif /* HAVE_NATIVE_COMP */ |
diff --git a/src/comp.h b/src/comp.h index 5c7bed6a304..077250ea869 100644 --- a/src/comp.h +++ b/src/comp.h | |||
| @@ -75,8 +75,8 @@ XNATIVE_COMP_UNIT (Lisp_Object a) | |||
| 75 | 75 | ||
| 76 | extern void hash_native_abi (void); | 76 | extern void hash_native_abi (void); |
| 77 | 77 | ||
| 78 | extern void load_comp_unit (struct Lisp_Native_Comp_Unit *comp_u, | 78 | extern Lisp_Object load_comp_unit (struct Lisp_Native_Comp_Unit *comp_u, |
| 79 | bool loading_dump, bool late_load); | 79 | bool loading_dump, bool late_load); |
| 80 | 80 | ||
| 81 | extern Lisp_Object native_function_doc (Lisp_Object function); | 81 | extern Lisp_Object native_function_doc (Lisp_Object function); |
| 82 | 82 | ||