Emacs Lispでは、ユーザーが作成したLispオブジェクト向けに 2種類のメモリ、普通メモリ(normal storage)と ピュアメモリ(pure storage)を使います。 普通メモリは、Emacsセッション中に新たに作成されるすべてのデータを置く場所です。 普通メモリに関する情報は以下の節を参照してください。 ピュアメモリは、あらかじめロードした標準Lispファイル群の特定のデータ、 つまり、Emacsの実行中にけっして変化しないデータを収めるために使います。
ピュアメモリは、temacsがあらかじめロードする標準Lispライブラリを
ロードしている最中にのみ割り当てられます。
ファイルemacsでは読み出し専用
(これができるオペレーティングシステムでは)と印が付けられ、
当該マシンで同時に実行されているすべてのEmacsのジョブで
メモリ領域を共有できるようにします。
ピュアメモリは拡張できません。
Emacsをコンパイルしたときに固定サイズが割り当てられ、
あらかじめロードするライブラリに対して十分な大きさがないと
temacsはクラッシュします。
その場合には、ファイルsrc/puresize.hのコンパイルパラメータ
PURESIZE
を増やす必要があります。
あらかじめロードするライブラリを追加したり標準機能に機能を追加しなければ、
そのようなことは普通は起こらないはずです。
この関数は、ピュアメモリ内にobjectをコピーしそれを返す。 文字列のコピーでは、ピュアメモリ内に同じ文字の新たな文字列を単純に作る。 ベクトルやコンスセルの内容は再帰的にコピーする。 シンボルなどの他のオブジェクトはコピーせずに無変更でそれらを返す。 マーカをコピーしようとするとエラーを通知する。
この関数は、Emacsを構築してダンプするとき以外ではなにもしない。 普通はファイルemacs/lisp/loaddefs.elでのみ呼び出されるが、 あらかじめロードするとこれを呼び出すようなパッケージも少数だがある。