diff options
author | Gerd Moellmann <gerd@gnu.org> | 2000-09-11 18:26:43 +0000 |
---|---|---|
committer | Gerd Moellmann <gerd@gnu.org> | 2000-09-11 18:26:43 +0000 |
commit | cc0f95a474767a554832d03a23c3a9a7cba833e6 (patch) | |
tree | b947a5d25577ed57000e1a4e49a2c127de68a06d /lisp/emacs-lisp/bytecomp.el | |
parent | e7997ff475b93087e6f6fca4630f4fdf9b47df8f (diff) | |
download | emacs-cc0f95a474767a554832d03a23c3a9a7cba833e6.tar.gz emacs-cc0f95a474767a554832d03a23c3a9a7cba833e6.tar.bz2 emacs-cc0f95a474767a554832d03a23c3a9a7cba833e6.zip |
(byte-compile-defvar): Only cons onto
current-load-list in top-level forms. Else this leaks a cons cell
every time a defun is called.
Diffstat (limited to 'lisp/emacs-lisp/bytecomp.el')
-rw-r--r-- | lisp/emacs-lisp/bytecomp.el | 25 |
1 files changed, 11 insertions, 14 deletions
diff --git a/lisp/emacs-lisp/bytecomp.el b/lisp/emacs-lisp/bytecomp.el index bdcb17cfa76..c58038ba2bb 100644 --- a/lisp/emacs-lisp/bytecomp.el +++ b/lisp/emacs-lisp/bytecomp.el @@ -10,7 +10,7 @@ ;;; This version incorporates changes up to version 2.10 of the ;;; Zawinski-Furuseth compiler. -(defconst byte-compile-version "$Revision: 2.73 $") +(defconst byte-compile-version "$Revision: 1.1 $") ;; This file is part of GNU Emacs. @@ -3220,19 +3220,16 @@ If FORM is a lambda or a macro, byte-compile it as a function." (setq byte-compile-bound-variables (cons var byte-compile-bound-variables))) (byte-compile-body-do-effect - (list (if (cdr (cdr form)) - (if (eq (car form) 'defconst) - (list 'setq var value) - (list 'or (list 'boundp (list 'quote var)) - (list 'setq var value)))) - ;; Put the defined variable in this library's load-history entry - ;; just as a real defvar would. - (list 'setq 'current-load-list - (list 'cons (list 'quote var) - 'current-load-list)) - (if string - (list 'put (list 'quote var) ''variable-documentation string)) - (list 'quote var))))) + (list + ;; Just as a real defvar would, but only in top-level forms. + (when (null byte-compile-current-form) + `(push ',var current-load-list)) + (when (and string (null byte-compile-current-form)) + `(put ',var 'variable-documentation ,string)) + (if (cdr (cdr form)) + (if (eq (car form) 'defconst) + `(setq ,var ,value) + `(if (boundp ',var) ',var (setq ,var ,value)))))))) (defun byte-compile-autoload (form) (and (byte-compile-constp (nth 1 form)) |