changeset 28336:49b7af1b8e1b

(byte-compile-eval): Fix and reenable the code.
author Stefan Monnier <monnier@iro.umontreal.ca>
date Sun, 26 Mar 2000 19:49:29 +0000
parents 012be509f4f4
children 080ef35e195d
files lisp/emacs-lisp/bytecomp.el
diffstat 1 files changed, 19 insertions(+), 12 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/emacs-lisp/bytecomp.el	Sun Mar 26 19:33:04 2000 +0000
+++ b/lisp/emacs-lisp/bytecomp.el	Sun Mar 26 19:49:29 2000 +0000
@@ -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 @@
 
 ;;; 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)))))))))
 
-
 
 ;;; byte compiler messages