summaryrefslogtreecommitdiff
path: root/lisp/emacs-lisp
diff options
context:
space:
mode:
authorKarl Heuer <kwzh@gnu.org>1995-03-24 23:43:21 +0000
committerKarl Heuer <kwzh@gnu.org>1995-03-24 23:43:21 +0000
commit69dc83fd8466788376fa5bf606d87c51be007c85 (patch)
tree130d2b2b6f9a8e0e6a899b7fc728b602e56a5580 /lisp/emacs-lisp
parentc7b6dfa6df76885853be8cadf06d8905e1310940 (diff)
downloademacs-69dc83fd8466788376fa5bf606d87c51be007c85.tar.gz
emacs-69dc83fd8466788376fa5bf606d87c51be007c85.tar.bz2
emacs-69dc83fd8466788376fa5bf606d87c51be007c85.zip
(byte-compile-out-toplevel): Compile lambda forms even if trivial.
Diffstat (limited to 'lisp/emacs-lisp')
-rw-r--r--lisp/emacs-lisp/bytecomp.el13
1 files changed, 8 insertions, 5 deletions
diff --git a/lisp/emacs-lisp/bytecomp.el b/lisp/emacs-lisp/bytecomp.el
index 9d4f632a485..b11b0fd1f14 100644
--- a/lisp/emacs-lisp/bytecomp.el
+++ b/lisp/emacs-lisp/bytecomp.el
@@ -555,7 +555,7 @@ otherwise pop it")
;; these ops are new to v19
;; To unbind back to the beginning of this frame.
-;; Not used yet, but wil be needed for tail-recursion elimination.
+;; Not used yet, but will be needed for tail-recursion elimination.
(byte-defop 146 0 byte-unbind-all)
;; these ops are new to v19
@@ -1946,7 +1946,10 @@ If FORM is a lambda or a macro, byte-compile it as a function."
;; Note that even (quote foo) must be parsed just as any subr by the
;; interpreter, so quote should be compiled into byte-code in some contexts.
;; What to leave uncompiled:
- ;; lambda -> a single atom.
+ ;; lambda -> never. we used to leave it uncompiled if the body was
+ ;; a single atom, but that causes confusion if the docstring
+ ;; uses the (file . pos) syntax. Besides, now that we have
+ ;; the Lisp_Compiled type, the compiled form is faster.
;; eval -> atom, quote or (function atom atom atom)
;; progn -> as <<same-as-eval>> or (progn <<same-as-eval>> atom)
;; file -> as progn, but takes both quotes and atoms, and longer forms.
@@ -1955,7 +1958,8 @@ If FORM is a lambda or a macro, byte-compile it as a function."
tmp body)
(cond
;; #### This should be split out into byte-compile-nontrivial-function-p.
- ((or (nthcdr (if (eq output-type 'file) 50 8) byte-compile-output)
+ ((or (eq output-type 'lambda)
+ (nthcdr (if (eq output-type 'file) 50 8) byte-compile-output)
(assq 'TAG byte-compile-output) ; Not necessary, but speeds up a bit.
(not (setq tmp (assq 'byte-return byte-compile-output)))
(progn
@@ -1990,8 +1994,7 @@ If FORM is a lambda or a macro, byte-compile it as a function."
(or (eq output-type 'file)
(not (delq nil (mapcar 'consp (cdr (car body))))))))
(setq rest (cdr rest)))
- rest)
- (and (consp (car body)) (eq output-type 'lambda)))
+ rest))
(let ((byte-compile-vector (byte-compile-constants-vector)))
(list 'byte-code (byte-compile-lapcode byte-compile-output)
byte-compile-vector byte-compile-maxdepth)))