]> git.eshelyaron.com Git - emacs.git/commit
Implement finalizers for module functions (Bug#30373)
authorPhilipp Stephani <phst@google.com>
Sun, 11 Feb 2018 20:38:22 +0000 (21:38 +0100)
committerPhilipp Stephani <phst@google.com>
Fri, 3 Jan 2020 18:24:10 +0000 (19:24 +0100)
commit48ffef5ef4b34799941a033591ea827d40025939
tree67b00c1bc546f3c9ef601c10db634da3094f7f57
parent2b6d702e5d2d572640c6bcd43f54138bacbe7ac8
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.
doc/lispref/internals.texi
etc/NEWS
src/alloc.c
src/emacs-module.c
src/emacs-module.h.in
src/lisp.h
src/module-env-28.h
test/data/emacs-module/mod-test.c
test/src/emacs-module-tests.el