# HG changeset patch # User Aidan Kehoe # Date 1336831404 -3600 # Node ID 0df4d95bd98a41c9a7826a307427e6f6dbcb9842 # Parent bed39edf91ba137860fa91f24628ff7bdecb43a1 Fetch its bytecode before unfolding a compiled function, byte-optimize.el lisp/ChangeLog addition: 2012-05-12 Aidan Kehoe * 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! diff -r bed39edf91ba -r 0df4d95bd98a lisp/ChangeLog --- 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 + + * 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 * mule/mule-category.el (word-combining-categories): diff -r bed39edf91ba -r 0df4d95bd98a lisp/byte-optimize.el --- 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