changeset 41176:2d63191afacd

(byte-compile-call-tree, byte-code-vector) (byte-stack+-info, byte-compile-last-warned-form) (byte-compile-last-logged-file): Don't defconst a variable. (no-byte-compile): Declare. (byte-compile-file): Don't boundp-check no-byte-compile any more. (byte-compile-defvar): Leave defconst as is.
author Stefan Monnier <monnier@iro.umontreal.ca>
date Sat, 17 Nov 2001 00:54:36 +0000
parents 7a8a9f274e2c
children 830a17080380
files lisp/emacs-lisp/bytecomp.el
diffstat 1 files changed, 17 insertions(+), 10 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/emacs-lisp/bytecomp.el	Sat Nov 17 00:51:55 2001 +0000
+++ b/lisp/emacs-lisp/bytecomp.el	Sat Nov 17 00:54:36 2001 +0000
@@ -10,7 +10,7 @@
 
 ;;; This version incorporates changes up to version 2.10 of the
 ;;; Zawinski-Furuseth compiler.
-(defconst byte-compile-version "$Revision: 2.91 $")
+(defconst byte-compile-version "$Revision: 2.92 $")
 
 ;; This file is part of GNU Emacs.
 
@@ -363,7 +363,7 @@
   :type '(choice (const :tag "Yes" t) (const :tag "No" nil)
 		 (other :tag "Ask" lambda)))
 
-(defconst byte-compile-call-tree nil "Alist of functions and their call tree.
+(defvar byte-compile-call-tree nil "Alist of functions and their call tree.
 Each element looks like
 
   \(FUNCTION CALLERS CALLS\)
@@ -441,10 +441,10 @@
 
 ;;; The byte codes; this information is duplicated in bytecomp.c
 
-(defconst byte-code-vector nil
+(defvar byte-code-vector nil
   "An array containing byte-code names indexed by byte-code values.")
 
-(defconst byte-stack+-info nil
+(defvar byte-stack+-info nil
   "An array with the stack adjustment for each byte-code.")
 
 (defmacro byte-defop (opcode stack-adjust opname &optional docstring)
@@ -810,8 +810,8 @@
 			   (if (symbolp x) (list 'prin1-to-string x) x))
 			 args)))))))
 
-(defconst byte-compile-last-warned-form nil)
-(defconst byte-compile-last-logged-file nil)
+(defvar byte-compile-last-warned-form nil)
+(defvar byte-compile-last-logged-file nil)
 
 (defvar byte-compile-last-line nil
   "Last known line number in the input.")
@@ -1322,6 +1322,12 @@
              (if (> skip-count 0) (format ", %d skipped" skip-count) "")
 	     (if (> dir-count 1) (format " in %d directories" dir-count) ""))))
 
+(defvar no-byte-compile nil
+  "Non-nil to prevent byte-compiling of emacs-lisp code.
+This is normally set in local file variables at the end of the elisp file:
+
+;; Local Variables:\n;; no-byte-compile: t\n;; End: ")
+
 ;;;###autoload
 (defun byte-compile-file (filename &optional load)
   "Compile a file of Lisp code named FILENAME into a file of byte code.
@@ -1388,8 +1394,7 @@
       (setq default-directory (file-name-directory filename)))
     ;; Check if the file's local variables explicitly specify not to
     ;; compile this file.
-    (if (with-current-buffer input-buffer
-	  (and (boundp 'no-byte-compile) no-byte-compile))
+    (if (with-current-buffer input-buffer no-byte-compile)
 	(progn
 	  (message "%s not compiled because of `no-byte-compile: %s'"
 		   (file-relative-name filename)
@@ -3296,10 +3301,12 @@
 	  (byte-compile-warn "third arg to %s %s is not a string: %s"
 			     fun var string))
 	`(put ',var 'variable-documentation ,string))
-      (if (cdr (cdr form))		; `value' provided
+      (if (cddr form)		; `value' provided
 	  (if (eq fun 'defconst)
 	      ;; `defconst' sets `var' unconditionally.
-	      `(setq ,var ,value)
+	      (let ((tmp (make-symbol "defconst-tmp-var")))
+		`(let ((,tmp ,value))
+		   (eval '(defconst ,var ,tmp))))
 	    ;; `defvar' sets `var' only when unbound.
 	    `(if (not (boundp ',var)) (setq ,var ,value))))
       `',var))))