summaryrefslogtreecommitdiff
path: root/src/pdumper.h
diff options
context:
space:
mode:
authorAndrea Corallo <akrl@sdf.org>2021-02-10 21:48:19 +0100
committerAndrea Corallo <akrl@sdf.org>2021-02-10 22:03:34 +0100
commit4fba79feee58e074d112bb47467913f9aec089c7 (patch)
tree4db2dcf4a96b9c38f4e8f681bcb6dad2d4d6cc97 /src/pdumper.h
parent2fcb85c3e780f1f2871ce0f300cfaffce9836eb0 (diff)
downloademacs-4fba79feee58e074d112bb47467913f9aec089c7.tar.gz
Add late load pdumper hooks so these can call into Lisp
* src/pdumper.h (pdumper_do_now_and_after_late_load): New function. * src/pdumper.c (dump_late_hooks, nr_dump_late_hooks): New static variables. (dump_metadata_for_pdumper): Add support for late load hooks. (pdumper_do_now_and_after_late_load_impl): New functions. (pdumper_load): Add support for late load hooks. * src/window.c (init_window_once): Register 'init_window_once_for_pdumper' to be executed after late load.
Diffstat (limited to 'src/pdumper.h')
-rw-r--r--src/pdumper.h13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/pdumper.h b/src/pdumper.h
index 24e99e22c7a..49e6739b0dc 100644
--- a/src/pdumper.h
+++ b/src/pdumper.h
@@ -81,6 +81,7 @@ pdumper_remember_lv_ptr_raw (void *ptr, enum Lisp_Type type)
typedef void (*pdumper_hook)(void);
extern void pdumper_do_now_and_after_load_impl (pdumper_hook hook);
+extern void pdumper_do_now_and_after_late_load_impl (pdumper_hook hook);
INLINE void
pdumper_do_now_and_after_load (pdumper_hook hook)
@@ -92,6 +93,18 @@ pdumper_do_now_and_after_load (pdumper_hook hook)
#endif
}
+/* Same as 'pdumper_do_now_and_after_load' but for hooks running code
+ that can call into Lisp. */
+INLINE void
+pdumper_do_now_and_after_late_load (pdumper_hook hook)
+{
+#ifdef HAVE_PDUMPER
+ pdumper_do_now_and_after_late_load_impl (hook);
+#else
+ hook ();
+#endif
+}
+
/* Macros useful in pdumper callback functions. Assign a value if
we're loading a dump and the value needs to be reset to its
original value, and if we're initializing for the first time,