diff options
| author | Philipp Stephani | 2018-02-11 21:38:22 +0100 |
|---|---|---|
| committer | Philipp Stephani | 2020-01-03 19:24:10 +0100 |
| commit | 48ffef5ef4b34799941a033591ea827d40025939 (patch) | |
| tree | 67b00c1bc546f3c9ef601c10db634da3094f7f57 /src/lisp.h | |
| parent | 2b6d702e5d2d572640c6bcd43f54138bacbe7ac8 (diff) | |
| download | emacs-48ffef5ef4b34799941a033591ea827d40025939.tar.gz emacs-48ffef5ef4b34799941a033591ea827d40025939.zip | |
Implement finalizers for module functions (Bug#30373)
* src/module-env-28.h: Add new module environment functions to
module environment for Emacs 28.
* src/emacs-module.h.in: Document that 'emacs_finalizer' also works
for function finalizers.
* src/emacs-module.c (CHECK_MODULE_FUNCTION): New function.
(struct Lisp_Module_Function): Add finalizer data member.
(module_make_function): Initialize finalizer.
(module_get_function_finalizer)
(module_set_function_finalizer): New module environment functions.
(module_finalize_function): New function.
(initialize_environment): Initialize new environment functions.
* src/alloc.c (cleanup_vector): Call potential module function
finalizer during garbage collection.
* test/data/emacs-module/mod-test.c (signal_error): New helper
function.
(memory_full): Use it.
(finalizer): New example function finalizer.
(Fmod_test_make_function_with_finalizer)
(Fmod_test_function_finalizer_calls): New test module functions.
(emacs_module_init): Define them.
* test/src/emacs-module-tests.el (module/function-finalizer): New unit
test.
* doc/lispref/internals.texi (Module Functions): Document new
functionality.
(Module Misc): Move description of 'emacs_finalizer' type to 'Module
Functions' node, and add a reference to it.
* etc/NEWS: Mention new functionality.
Diffstat (limited to 'src/lisp.h')
| -rw-r--r-- | src/lisp.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/src/lisp.h b/src/lisp.h index 356692d53a1..36bb79d67e1 100644 --- a/src/lisp.h +++ b/src/lisp.h | |||
| @@ -4244,6 +4244,7 @@ extern Lisp_Object module_function_documentation | |||
| 4244 | (struct Lisp_Module_Function const *); | 4244 | (struct Lisp_Module_Function const *); |
| 4245 | extern module_funcptr module_function_address | 4245 | extern module_funcptr module_function_address |
| 4246 | (struct Lisp_Module_Function const *); | 4246 | (struct Lisp_Module_Function const *); |
| 4247 | extern void module_finalize_function (const struct Lisp_Module_Function *); | ||
| 4247 | extern void mark_modules (void); | 4248 | extern void mark_modules (void); |
| 4248 | extern void init_module_assertions (bool); | 4249 | extern void init_module_assertions (bool); |
| 4249 | extern void syms_of_module (void); | 4250 | extern void syms_of_module (void); |