Emacs Lisp uses two kinds of storage for user-created Lisp objects: normal storage and pure storage. Normal storage is where all the new data created during an Emacs session is kept; see the following section for information on normal storage. Pure storage is used for certain data in the preloaded standard Lisp files--data that should never change during actual use of Emacs.
Pure storage is allocated only while `temacs' is loading the
standard preloaded Lisp libraries. In the file `emacs', it is
marked as read-only (on operating systems that permit this), so that
the memory space can be shared by all the Emacs jobs running on the
machine at once. Pure storage is not expandable; a fixed amount is
allocated when Emacs is compiled, and if that is not sufficient for the
preloaded libraries, `temacs' crashes. If that happens, you must
increase the compilation parameter PURESIZE
in the file
`src/puresize.h'. This normally won't happen unless you try to
preload additional libraries or add features to the standard ones.
This function is a no-op except while Emacs is being built and dumped; it is usually called only in the file `emacs/lisp/loaddefs.el', but a few packages call it just in case you decide to preload them.
defun
should make a copy of the
function definition in pure storage. If it is non-nil
, then the
function definition is copied into pure storage.
This flag is t
while loading all of the basic functions for
building Emacs initially (allowing those functions to be sharable and
non-collectible). Dumping Emacs as an executable always writes
nil
in this variable, regardless of the value it actually has
before and after dumping.
You should not change this flag in a running Emacs.
Go to the first, previous, next, last section, table of contents.