changeset 68001:8e733b93ffdc

(byte-compile-file-form-defalias): Optimize the body of a defalias like any other code.
author Stefan Monnier <monnier@iro.umontreal.ca>
date Tue, 03 Jan 2006 18:35:58 +0000
parents 830e95c83d49
children 84f2196866ae
files lisp/ChangeLog lisp/emacs-lisp/bytecomp.el
diffstat 2 files changed, 16 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/ChangeLog	Tue Jan 03 18:25:26 2006 +0000
+++ b/lisp/ChangeLog	Tue Jan 03 18:35:58 2006 +0000
@@ -1,5 +1,8 @@
 2006-01-03  Stefan Monnier  <monnier@iro.umontreal.ca>
 
+	* emacs-lisp/bytecomp.el (byte-compile-file-form-defalias):
+	Optimize the body of a defalias like any other code.
+
 	* font-lock.el (font-lock-fontify-buffer, font-lock-fontify-region):
 	Make sure we've setup font-lock's vars.  It may influence which
 	function we then call.
@@ -13,10 +16,10 @@
 
 2006-01-02  J.D. Smith  <jdsmith@as.arizona.edu>
 
-	* mouse.el (mouse-drag-track): Renamed, from
+	* mouse.el (mouse-drag-track): Rename, from
 	`mouse-drag-region-1'.  Includes optional argument required to
-	enable post-drag event processing (e.g. delete region keys).  Can
-	be used without this argument to track a mouse region and operate
+	enable post-drag event processing (e.g. delete region keys).
+	Can be used without this argument to track a mouse region and operate
 	on it as soon as the drag completes.
 	(mouse-drag-region): Use `mouse-drag-track'.
 
--- a/lisp/emacs-lisp/bytecomp.el	Tue Jan 03 18:25:26 2006 +0000
+++ b/lisp/emacs-lisp/bytecomp.el	Tue Jan 03 18:35:58 2006 +0000
@@ -1,7 +1,7 @@
 ;;; bytecomp.el --- compilation of Lisp code into byte code
 
 ;; Copyright (C) 1985, 1986, 1987, 1992, 1994, 1998, 2000, 2001, 2002,
-;;   2003, 2004, 2005 Free Software Foundation, Inc.
+;;   2003, 2004, 2005, 2006 Free Software Foundation, Inc.
 
 ;; Author: Jamie Zawinski <jwz@lucid.com>
 ;;	Hallvard Furuseth <hbf@ulrik.uio.no>
@@ -3785,7 +3785,15 @@
 	(push (cons (nth 1 (nth 1 form))
 		    (if constant (nth 1 (nth 2 form)) t))
 	      byte-compile-function-environment)))
-  (byte-compile-normal-call form))
+  ;; We used to jus do: (byte-compile-normal-call form)
+  ;; But it turns out that this fails to optimize the code.
+  ;; So instead we now do the same as what other byte-hunk-handlers do,
+  ;; which is to call back byte-compile-file-form and then return nil.
+  ;; Except that we can't just call byte-compile-file-form since it would
+  ;; call us right back.
+  (byte-compile-keep-pending form)
+  ;; Return nil so the form is not output twice.
+  nil)
 
 ;; Turn off warnings about prior calls to the function being defalias'd.
 ;; This could be smarter and compare those calls with