aboutsummaryrefslogtreecommitdiffstats
path: root/lisp/emacs-lisp
diff options
context:
space:
mode:
authorRichard M. Stallman <[email protected]>1994-08-04 21:47:55 +0000
committerRichard M. Stallman <[email protected]>1994-08-04 21:47:55 +0000
commit285cdf4e20fa56fd72d972d37e78bba397bf0ba3 (patch)
treeaa788d6c68acaf735b1db3b396427c243ee05657 /lisp/emacs-lisp
parentfabaa9b58e200675bff5ea3c904c3ec7fea54f40 (diff)
(byte-compile-protect-from-advice): Macro deleted.
(byte-compile-from-buffer, byte-compile-top-level): Don't use it.
Diffstat (limited to 'lisp/emacs-lisp')
-rw-r--r--lisp/emacs-lisp/bytecomp.el151
1 files changed, 60 insertions, 91 deletions
diff --git a/lisp/emacs-lisp/bytecomp.el b/lisp/emacs-lisp/bytecomp.el
index b63fe99579..fa2ef9f333 100644
--- a/lisp/emacs-lisp/bytecomp.el
+++ b/lisp/emacs-lisp/bytecomp.el
@@ -1250,92 +1250,62 @@ With argument, insert value in current buffer after the form."
((message "%s" (prin1-to-string value)))))))
-(defmacro byte-compile-protect-from-advice (&rest body)
- ;; Temporarily deactivates advice of `defun/defmacro' while BODY is run.
- ;; After completion of BODY the initial advice state is reinstated.
- ;; If `defun/defmacro' are actively advised during compilation then the
- ;; compilation of nested `defun/defmacro's produces incorrect code which
- ;; is the motivation for this macro. It calls the functions `ad-is-active',
- ;; `ad-activate' and `ad-deactivate' which will be reported as undefined
- ;; functions during the compilation of the compiler.
- (` (let (;; make sure no `require' activates them by
- ;; accident via a call to `ad-start-advice':
- (ad-advised-definers '(fset defalias define-function))
- defun-active-p defmacro-active-p)
- (cond (;; check whether Advice is loaded:
- (fboundp 'ad-scan-byte-code-for-fsets)
- ;; save activation state of `defun/defmacro' and
- ;; deactivate them if their advice is active:
- (if (setq defun-active-p (ad-is-active 'defun))
- (ad-deactivate 'defun))
- (if (setq defmacro-active-p (ad-is-active 'defmacro))
- (ad-deactivate 'defmacro))))
- (unwind-protect
- (progn
- (,@ body))
- ;; reactivate what was active before:
- (if defun-active-p
- (ad-activate 'defun))
- (if defmacro-active-p
- (ad-activate 'defmacro))))))
-
(defun byte-compile-from-buffer (inbuffer &optional filename)
;; Filename is used for the loading-into-Emacs-18 error message.
- (byte-compile-protect-from-advice
- (let (outbuffer)
- (let (;; Prevent truncation of flonums and lists as we read and print them
- (float-output-format nil)
- (case-fold-search nil)
- (print-length nil)
- ;; Simulate entry to byte-compile-top-level
- (byte-compile-constants nil)
- (byte-compile-variables nil)
- (byte-compile-tag-number 0)
- (byte-compile-depth 0)
- (byte-compile-maxdepth 0)
- (byte-compile-output nil)
- ;; #### This is bound in b-c-close-variables.
- ;; (byte-compile-warnings (if (eq byte-compile-warnings t)
- ;; byte-compile-warning-types
- ;; byte-compile-warnings))
- )
- (byte-compile-close-variables
- (save-excursion
- (setq outbuffer
- (set-buffer (get-buffer-create " *Compiler Output*")))
- (erase-buffer)
- ;; (emacs-lisp-mode)
- (setq case-fold-search nil)
-
- ;; This is a kludge. Some operating systems (OS/2, DOS) need to
- ;; write files containing binary information specially.
- ;; Under most circumstances, such files will be in binary
- ;; overwrite mode, so those OS's use that flag to guess how
- ;; they should write their data. Advise them that .elc files
- ;; need to be written carefully.
- (setq overwrite-mode 'overwrite-mode-binary))
- (displaying-byte-compile-warnings
- (save-excursion
- (set-buffer inbuffer)
- (goto-char 1)
- (while (progn
- (while (progn (skip-chars-forward " \t\n\^l")
- (looking-at ";"))
- (forward-line 1))
- (not (eobp)))
- (byte-compile-file-form (read inbuffer)))
- ;; Compile pending forms at end of file.
- (byte-compile-flush-pending)
- (and filename (byte-compile-insert-header filename))
- (byte-compile-warn-about-unresolved-functions)
- ;; always do this? When calling multiple files, it
- ;; would be useful to delay this warning until all have
- ;; been compiled.
- (setq byte-compile-unresolved-functions nil)))
+ (let (outbuffer)
+ (let (;; Prevent truncation of flonums and lists as we read and print them
+ (float-output-format nil)
+ (case-fold-search nil)
+ (print-length nil)
+ ;; Simulate entry to byte-compile-top-level
+ (byte-compile-constants nil)
+ (byte-compile-variables nil)
+ (byte-compile-tag-number 0)
+ (byte-compile-depth 0)
+ (byte-compile-maxdepth 0)
+ (byte-compile-output nil)
+ ;; #### This is bound in b-c-close-variables.
+ ;; (byte-compile-warnings (if (eq byte-compile-warnings t)
+ ;; byte-compile-warning-types
+ ;; byte-compile-warnings))
+ )
+ (byte-compile-close-variables
+ (save-excursion
+ (setq outbuffer
+ (set-buffer (get-buffer-create " *Compiler Output*")))
+ (erase-buffer)
+ ;; (emacs-lisp-mode)
+ (setq case-fold-search nil)
+
+ ;; This is a kludge. Some operating systems (OS/2, DOS) need to
+ ;; write files containing binary information specially.
+ ;; Under most circumstances, such files will be in binary
+ ;; overwrite mode, so those OS's use that flag to guess how
+ ;; they should write their data. Advise them that .elc files
+ ;; need to be written carefully.
+ (setq overwrite-mode 'overwrite-mode-binary))
+ (displaying-byte-compile-warnings
(save-excursion
- (set-buffer outbuffer)
- (goto-char (point-min)))))
- outbuffer)))
+ (set-buffer inbuffer)
+ (goto-char 1)
+ (while (progn
+ (while (progn (skip-chars-forward " \t\n\^l")
+ (looking-at ";"))
+ (forward-line 1))
+ (not (eobp)))
+ (byte-compile-file-form (read inbuffer)))
+ ;; Compile pending forms at end of file.
+ (byte-compile-flush-pending)
+ (and filename (byte-compile-insert-header filename))
+ (byte-compile-warn-about-unresolved-functions)
+ ;; always do this? When calling multiple files, it
+ ;; would be useful to delay this warning until all have
+ ;; been compiled.
+ (setq byte-compile-unresolved-functions nil)))
+ (save-excursion
+ (set-buffer outbuffer)
+ (goto-char (point-min)))))
+ outbuffer))
;;; (if (not eval)
;;; outbuffer
;;; (while (condition-case nil
@@ -1821,13 +1791,12 @@ If FORM is a lambda or a macro, byte-compile it as a function."
;; 'progn or t -> a list of forms,
;; 'lambda -> body of a lambda,
;; 'file -> used at file-level.
- (byte-compile-protect-from-advice
- (let ((byte-compile-constants nil)
- (byte-compile-variables nil)
- (byte-compile-tag-number 0)
- (byte-compile-depth 0)
- (byte-compile-maxdepth 0)
- (byte-compile-output nil))
+ (let ((byte-compile-constants nil)
+ (byte-compile-variables nil)
+ (byte-compile-tag-number 0)
+ (byte-compile-depth 0)
+ (byte-compile-maxdepth 0)
+ (byte-compile-output nil))
(if (memq byte-optimize '(t source))
(setq form (byte-optimize-form form for-effect)))
(while (and (eq (car-safe form) 'progn) (null (cdr (cdr form))))
@@ -1838,7 +1807,7 @@ If FORM is a lambda or a macro, byte-compile it as a function."
(natnump (nth 3 form)))
form
(byte-compile-form form for-effect)
- (byte-compile-out-toplevel for-effect output-type)))))
+ (byte-compile-out-toplevel for-effect output-type))))
(defun byte-compile-out-toplevel (&optional for-effect output-type)
(if for-effect