changeset 5663:0df4d95bd98a

Fetch its bytecode before unfolding a compiled function, byte-optimize.el lisp/ChangeLog addition: 2012-05-12 Aidan Kehoe <kehoea@parhasard.net> * byte-optimize.el (byte-compile-unfold-lambda): Fetch the bytecode before unfolding a compiled function, its body may have been compiled lazily thanks to byte-compile-dynamic. Thank you Mats Lidell and the package smoketest!
author Aidan Kehoe <kehoea@parhasard.net>
date Sat, 12 May 2012 15:03:24 +0100
parents bed39edf91ba
children 00fd55d635fb
files lisp/ChangeLog lisp/byte-optimize.el
diffstat 2 files changed, 14 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/ChangeLog	Thu May 10 13:53:06 2012 +0100
+++ b/lisp/ChangeLog	Sat May 12 15:03:24 2012 +0100
@@ -1,3 +1,11 @@
+2012-05-12  Aidan Kehoe  <kehoea@parhasard.net>
+
+	* byte-optimize.el (byte-compile-unfold-lambda):
+	Fetch the bytecode before unfolding a compiled function, its body
+	may have been compiled lazily thanks to
+	byte-compile-dynamic. Thank you Mats Lidell and the package
+	smoketest!
+
 2012-05-10  Aidan Kehoe  <kehoea@parhasard.net>
 
 	* mule/mule-category.el (word-combining-categories):
--- a/lisp/byte-optimize.el	Thu May 10 13:53:06 2012 +0100
+++ b/lisp/byte-optimize.el	Sat May 12 15:03:24 2012 +0100
@@ -296,11 +296,12 @@
   (let ((lambda (car form))
 	(values (cdr form)))
     (if (compiled-function-p lambda)
-	(setq lambda (list 'lambda (compiled-function-arglist lambda)
-			  (list 'byte-code
-				(compiled-function-instructions lambda)
-				(compiled-function-constants lambda)
-				(compiled-function-stack-depth lambda)))))
+	(setq lambda (fetch-bytecode lambda)
+              lambda (list 'lambda (compiled-function-arglist lambda)
+                           (list 'byte-code
+                                 (compiled-function-instructions lambda)
+                                 (compiled-function-constants lambda)
+                                 (compiled-function-stack-depth lambda)))))
     (let ((arglist (nth 1 lambda))
 	  (body (cdr (cdr lambda)))
 	  optionalp restp