4.4BSD/usr/src/contrib/emacs-18.57/etc/APOLLO

The Apollo has a bizarre operating system which does not permit
Emacs to be dumped with preloaded pure Lisp code.  Therefore, each
time you start Emacs on this system, the standard Lisp code is loaded
into it.  Expect it to take a long time.  You can prevent loading of
the standard Lisp code by specifying the -nl switch.  It must
come at the beginning of the command line; only the -t and -batch
switches may come before it.

You must use m-apollo.h in the config.h file, together with
s-bsd4.2.h.

There is one remaining problem on the Apollo.  You must replace
the CPP line in src/Makefile with "CPP = /usr/lib/cpp".
The C preprocessor lives there rather than in /lib/cpp because the
Aegis OS uses the /lib directory as the repository for shared libraries.


Here is a design for a method of dumping and reloading the relevant
necessary impure areas of Emacs.

On dumping, you need to dump only the array `pure' plus the
locations that contain values of forwarded Lisp variables or that are
protected for garbage collection.  The former can be found by a
garbage- collection-like technique, and the latter are in the
staticprolist vector (see alloc.c for both things).

Reloading would work in an Emacs that has just been started; except
when a switch is specified to inhibit this, it would read the dump
file and set all the appropriate locations.  The data loaded must be
relocated, but that's not hard.  Those locations that are of type
Lisp_Object can be found by a technique like garbage-collection, and
those of them that point to storage can be relocated.  The other data
read from the file will not need to be relocated.

The switch to inhibit loading the data base would be used when it
is time to dump a new data base.

This would take a few seconds, which is much faster than loading
the Lisp code of Emacs from scratch.