changeset 11117:34477ac36e6e

(byte-compile-out-toplevel): Compile lambda forms even if trivial.
author Karl Heuer <kwzh@gnu.org>
date Fri, 24 Mar 1995 23:43:21 +0000
parents 73b51ad289e3
children 238b3b5adefd
files lisp/emacs-lisp/bytecomp.el
diffstat 1 files changed, 8 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/emacs-lisp/bytecomp.el	Fri Mar 24 22:46:42 1995 +0000
+++ b/lisp/emacs-lisp/bytecomp.el	Fri Mar 24 23:43:21 1995 +0000
@@ -555,7 +555,7 @@
 ;; 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 @@
   ;; 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 @@
 	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 @@
 		     (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)))