*** empty log message ***
[bpt/emacs.git] / lisp / loadup.el
index 11ead17..a11aa1a 100644 (file)
        (equal (nth 4 command-line-args) "bootstrap")
        ;; in case CANNOT_DUMP
        (equal (nth 0 command-line-args) "../src/bootstrap-emacs"))
-    (let ((path (car load-path)))
-      (setq load-path (list path
-                           (expand-file-name "emacs-lisp" path)
-                           (expand-file-name "language" path)
-                           (expand-file-name "international" path)))))
+    (let ((dir (car load-path)))
+      ;; We'll probably overflow the pure space.
+      (setq purify-flag nil)
+      (setq load-path (list dir
+                           (expand-file-name "emacs-lisp" dir)
+                           (expand-file-name "language" dir)
+                           (expand-file-name "international" dir)
+                           (expand-file-name "textmodes" dir)))))
 
 (message "Using load-path %s" load-path)
 
-;;; We don't want to have any undo records in the dumped Emacs.
+;; We don't want to have any undo records in the dumped Emacs.
 (buffer-disable-undo "*scratch*")
 
-(load "byte-run")
+(load "emacs-lisp/byte-run")
+(load "emacs-lisp/backquote")
 (load "subr")
 
 ;; We specify .el in case someone compiled version.el by mistake.
@@ -53,8 +57,7 @@
 
 (load "widget")
 (load "custom")
-(load "emacs-lisp/backquote")
-(load "map-ynp")
+(load "emacs-lisp/map-ynp")
 (load "env")
 (load "cus-start")
 (load "international/mule")
@@ -62,9 +65,9 @@
 (load "format")
 (load "bindings")
 (setq load-source-file-function 'load-with-code-conversion)
-(load "simple")
 (load "files")
 
+(load "cus-face")
 (load "faces")  ; after here, `defface' may be used.
 
 (message "Lists of integers (garbage collection statistics) are normal output")
@@ -72,6 +75,7 @@
 (message "%s" (garbage-collect))
 (load "loaddefs.el")  ;Don't get confused if someone compiled this by mistake.
 (message "%s" (garbage-collect))
+(load "simple")
 
 (load "help")
 
@@ -86,7 +90,9 @@
 (load "language/chinese")
 (load "language/cyrillic")
 (load "language/indian")
-(load "language/devanagari")           ; This should be loaded after indian.
+(load "language/devanagari")    ; This should be loaded after indian.
+(load "language/malayalam")     ; This should be loaded after indian.
+(load "language/tamil")                 ; This should be loaded after indian.
 (load "language/english")
 (load "language/ethiopic")
 (load "language/european")
 (load "window")
 (load "frame")
 (load "term/tty-colors")
+(load "font-core")
 
 (if (fboundp 'frame-face-alist)
     (progn
       (and (boundp 'x-toolkit-scroll-bars)
           (load "scroll-bar"))
       (load "select")))
+(load "emacs-lisp/timer")
 (load "isearch")
 
 (message "%s" (garbage-collect))
       (load "ls-lisp")))
 (if (fboundp 'atan)    ; preload some constants and
     (progn             ; floating pt. functions if we have float support.
-      (load "float-sup")))
+      (load "emacs-lisp/float-sup")))
 (message "%s" (garbage-collect))
 
 (load "vc-hooks")
           (versions (mapcar (function (lambda (name)
                                         (string-to-int (substring name (length base)))))
                             files)))
-      (setq emacs-version (format "%s.%d"
-                                 emacs-version
-                                 (if versions
-                                     (1+ (apply 'max versions))
-                                   1)))))
+      ;; `emacs-version' is a constant, so we shouldn't change it with `setq'.
+      (defconst emacs-version
+       (format "%s.%d"
+               emacs-version (if versions (1+ (apply 'max versions)) 1)))))
 
 ;; Note: all compiled Lisp files loaded above this point
 ;; must be among the ones parsed by make-docfile
 
 ;; Write the value of load-history into fns-VERSION.el,
 ;; then clear out load-history.
-(if (or (equal (nth 3 command-line-args) "dump")
-       (equal (nth 4 command-line-args) "dump"))
-    (let ((buffer-undo-list t)
-         (coding-system-for-write 'utf-8))
-      (princ "(setq load-history\n" (current-buffer))
-      (princ "      (nconc load-history\n" (current-buffer))
-      (princ "             '(" (current-buffer))
-      (let ((tem load-history))
-       (while tem
-         (prin1 (car tem) (current-buffer))
-         (terpri (current-buffer))
-         (if (cdr tem)
-             (princ "               " (current-buffer)))
-         (setq tem (cdr tem))))
-      (princ ")))\n" (current-buffer))
-      (write-region (point-min) (point-max)
-                   (expand-file-name
-                    (cond
-                     ((eq system-type 'ms-dos)
-                      "../lib-src/fns.el")
-                     ((eq system-type 'windows-nt)
-                      (format "../../../lib-src/fns-%s.el" emacs-version))
-                     (t
-                      (format "../lib-src/fns-%s.el" emacs-version)))
-                    invocation-directory))
-      (erase-buffer)
-      (setq load-history nil))
-  (setq symbol-file-load-history-loaded t))
+;; (if (or (equal (nth 3 command-line-args) "dump")
+;;     (equal (nth 4 command-line-args) "dump"))
+;;     (let ((buffer-undo-list t))
+;;       (princ "(setq load-history\n" (current-buffer))
+;;       (princ "      (nconc load-history\n" (current-buffer))
+;;       (princ "             '(" (current-buffer))
+;;       (let ((tem load-history))
+;;     (while tem
+;;       (prin1 (car tem) (current-buffer))
+;;       (terpri (current-buffer))
+;;       (if (cdr tem)
+;;           (princ "               " (current-buffer)))
+;;       (setq tem (cdr tem))))
+;;       (princ ")))\n" (current-buffer))
+;;       (write-region (point-min) (point-max)
+;;                 (expand-file-name
+;;                  (cond
+;;                   ((eq system-type 'ms-dos)
+;;                    "../lib-src/fns.el")
+;;                   ((eq system-type 'windows-nt)
+;;                    (format "../../../lib-src/fns-%s.el" emacs-version))
+;;                   (t
+;;                    (format "../lib-src/fns-%s.el" emacs-version)))
+;;                  invocation-directory))
+;;       (erase-buffer)
+;;       (setq load-history nil))
+;;   (setq symbol-file-load-history-loaded t))
+;; We don't use this fns-*.el file.  Instead we keep the data in PURE space.
+;; Make sure that the spine of the list is not in pure space because it can
+;; be destructively mutated in lread.c:build_load_history.
+(setq load-history (mapcar 'purecopy load-history))
+(setq symbol-file-load-history-loaded t)
+
 (set-buffer-modified-p nil)
 
 ;; reset the load-path.  See lread.c:init_lread why.
 ;;; At this point, we're ready to resume undo recording for scratch.
 (buffer-enable-undo "*scratch*")
 
+(if (null (garbage-collect))
+    (setq pure-space-overflow t))
+
 (if (or (member (nth 3 command-line-args) '("dump" "bootstrap"))
        (member (nth 4 command-line-args) '("dump" "bootstrap")))
     (if (eq system-type 'vax-vms)
 
 (eval top-level)
 
+\f
+;;; Local Variables:
+;;; no-byte-compile: t
+;;; no-update-autoloads: t
+;;; End:
 ;;; loadup.el ends here