(byte-compile-eval): Fix and reenable the code.
authorStefan Monnier <monnier@iro.umontreal.ca>
Sun, 26 Mar 2000 19:52:27 +0000 (19:52 +0000)
committerStefan Monnier <monnier@iro.umontreal.ca>
Sun, 26 Mar 2000 19:52:27 +0000 (19:52 +0000)
lisp/ChangeLog
lisp/emacs-lisp/bytecomp.el

index 7e441cd..b471f39 100644 (file)
@@ -1,3 +1,8 @@
+2000-03-26  Stefan Monnier  <monnier@cs.yale.edu>
+
+       * emacs-lisp/bytecomp.el (byte-compile-eval): Fix and reenable
+       the code.
+
 2000-03-26  Dave Love  <fx@gnu.org>
 
        * net/browse-url.el (browse-url): Re-fix case of
        compatible with inf-lisp version.
        (eval-defun-1): Fix custom-declare-variable case.
 
+2000-03-25  Stefan Monnier  <monnier@cs.yale.edu>
+
+       * cus-edit.el (hook): Use `dolist' instead of CL's `mapc'.
+
 2000-03-24  Gerd Moellmann  <gerd@gnu.org>
 
        * Makefile (COMPILE_FIRST): New macro.
index b4ef87f..0dab104 100644 (file)
@@ -10,7 +10,7 @@
 
 ;;; This version incorporates changes up to version 2.10 of the 
 ;;; Zawinski-Furuseth compiler.
-(defconst byte-compile-version "$Revision: 1.1 $")
+(defconst byte-compile-version "$Revision: 2.65 $")
 
 ;; This file is part of GNU Emacs.
 
@@ -762,25 +762,32 @@ otherwise pop it")
 \f
 ;;; compile-time evaluation
 
-(defun byte-compile-eval (x)
+(defun byte-compile-eval (form)
+  "Eval FORM and mark the functions defined therein.
+Each function's symbol gets marked with the `byte-compile-noruntime' property."
   (let ((hist-orig load-history)
        (hist-nil-orig current-load-list))
-    (prog1 (eval x)
-      (when (and nil (memq 'noruntime byte-compile-warnings))
+    (prog1 (eval form)
+      (when (memq 'noruntime byte-compile-warnings)
        (let ((hist-new load-history)
              (hist-nil-new current-load-list))
-         (while (not (eq hist-new hist-orig))
-           (dolist (s (pop hist-new))
-             (cond
-              ((symbolp s) (put s 'byte-compile-noruntime t))
-              ((and (consp s) (eq 'autoload (car s)))
-               (put (cdr s) 'byte-compile-noruntime t)))))
-         (while (not (eq hist-nil-new hist-nil-orig))
+         ;; Go through load-history, look for newly loaded files
+         ;; and mark all the functions defined therein.
+         (while (and hist-new (not (eq hist-new hist-orig)))
+           (let ((xs (pop hist-new)))
+             ;; Make sure the file was not already loaded before.
+             (unless (assoc (car xs) hist-orig)
+               (dolist (s xs)
+                 (cond
+                  ((symbolp s) (put s 'byte-compile-noruntime t))
+                  ((and (consp s) (eq 'autoload (car s)))
+                   (put (cdr s) 'byte-compile-noruntime t)))))))
+         ;; Go through current-load-list for the locally defined funs.
+         (while (and hist-nil-new (not (eq hist-nil-new hist-nil-orig)))
            (let ((s (pop hist-nil-new)))
              (when (symbolp s)
                (put s 'byte-compile-noruntime t)))))))))
 
-
 \f
 ;;; byte compiler messages