Now the portable dumper dumps the data, and when restarting loads the
data, relocate/relink everything, and nicely bombs in
init_console_stream.
Destroy-your-own-xemacs-HOWTO:
- compile with --pdump
- see the "xemacs not found" error message
- see that there is a new src/xemacs.dmp file
- do cd src; temacs
- look at the nice core
If you compile without --pdump, everything works as usual.
It would be nice if a windows developer would try to compile with
--pdump. I _tried_ to do it right, but I don't know what the level of
support of open/read/write/close is.
The next step is having it go through init_console_stream. The
problem is, I don't understand yet what should and shouldn't be done.
The situation is a bit weird, with initialize=1, all dumped variables
available, but with Vterminal_{console,device,frame} not dumped. For
now it breaks on Fset('device, device *) with 'device unbounded.
Any help or hints about how it should work welcome.
OG.
PS: This includes my two prevoius patches too.
1999-09-28 Olivier Galibert <galibert(a)pobox.com>
* symsinit.h: Added lots of prototypes.
* symeval.h: Added defsymbol_nodump declaration.
* symbols.c (find_symbol_value): Lame attempt at making the
startup go further.
(defsymbol_nodump): Added.
* mule-charset.c: Collapsed global lisp objects arrays in one
dumpable structure.
* lrecord.h: Added some flags.
* lisp.h: Added dumped flag to dynarrs. Added dumpstruct
declaration.
* glyphs.h (INITIALIZE_IMAGE_INSTANTIATOR_FORMAT_NO_SYM): Don't
staticpro dynamic variables.
* glyphs.c (reinit_specifier_type_create_image): Added.
(image_instantiator_format_create): Dump image instantiator format
dynarr.
(reinit_image_instantiator_format_create): Added.
* emacs.c (main_1): Added reinits calls.
* dynarr.c: Protect dumped dynarrays from going berzek in free or
realloc.
* specifier.h (INITIALIZE_SPECIFIER_TYPE): Don't staticpro dynamic
variables.
* specifier.c (specifier_type_create): Dump the specifier type
dynarr.
(reinit_specifier_type_create): Added.
* console.h (INITIALIZE_CONSOLE_TYPE): Don't staticpro dynamic
variables.
* console.c (console_type_create): Dump the console type dynarr.
(reinit_vars_of_console): Extracted from vars_of_console.
(reinit_complex_vars_of_console): Extracted from
complex_vars_of_console
* window.c (reinit_vars_of_window): Extracted from vars_of_window.
* toolbar.c (reinit_specifier_type_create_toolbar): Added.
* search.c (reinit_vars_of_search): Extracted from vars_of_search.
* objects.c (reinit_specifier_type_create_objects): Added.
(reinit_vars_of_objects): Extracted from vars_of_objects.
* lstream.c (reinit_vars_of_lstream): Extracted from
vars_of_lstream.
* lread.c (reinit_vars_of_lread): Extracted from vars_of_lread.
* gutter.c (reinit_specifier_type_create_gutter): Added.
* glyphs-x.c (reinit_image_instantiator_format_create_glyphs_x):
Added.
* glyphs-widget.c
(reinit_image_instantiator_format_create_glyphs_widget): Added
* glyphs-msw.c
(reinit_image_instantiator_format_create_glyphs_mswindows): Added.
* glyphs-eimage.c
(reinit_image_instantiator_format_create_glyphs_eimage): Added.
* event-stream.c (reinit_vars_of_event_stream): Extracted from
vars_of_event_stream
* eval.c (reinit_vars_of_eval): Extracted from vars_of_eval.
* device.c (reinit_vars_of_device): Extracted from vars_of_device.
* console-x.c (reinit_console_type_create_x): Added.
* console-tty.c (reinit_console_type_create_tty): Added
* console-stream.c (reinit_console_type_create_stream): Added.
(init_console_stream): If PDUMP, always reinitialise basic
devices.
* console-msw.c (reinit_console_type_create_mswindows): Added.
* buffer.c (reinit_vars_of_buffer): Extracted from
init_vars_of_buffer.
(reinit_complex_vars_of_buffer): Extracted from
complex_vars_of_buffer
* alloc.c: Further with the portable dumping, the revenge.
(dumpstruct): Added.
(reinit_alloc_once_early): Extracted from init_alloc_once_early.
* specifier.c (sizeof_specifier): Correct size computation.
(make_specifier_internal): Ditto.
1999-09-27 Olivier Galibert <galibert(a)pobox.com>
* alloc.c: Further with the portable dumping.