comparison lisp/byte-optimize.el @ 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 2a870a7b86bd
children b4715fcbe001
comparison
equal deleted inserted replaced
5662:bed39edf91ba 5663:0df4d95bd98a
294 (defun byte-compile-unfold-lambda (form &optional name) 294 (defun byte-compile-unfold-lambda (form &optional name)
295 (or name (setq name "anonymous lambda")) 295 (or name (setq name "anonymous lambda"))
296 (let ((lambda (car form)) 296 (let ((lambda (car form))
297 (values (cdr form))) 297 (values (cdr form)))
298 (if (compiled-function-p lambda) 298 (if (compiled-function-p lambda)
299 (setq lambda (list 'lambda (compiled-function-arglist lambda) 299 (setq lambda (fetch-bytecode lambda)
300 (list 'byte-code 300 lambda (list 'lambda (compiled-function-arglist lambda)
301 (compiled-function-instructions lambda) 301 (list 'byte-code
302 (compiled-function-constants lambda) 302 (compiled-function-instructions lambda)
303 (compiled-function-stack-depth lambda))))) 303 (compiled-function-constants lambda)
304 (compiled-function-stack-depth lambda)))))
304 (let ((arglist (nth 1 lambda)) 305 (let ((arglist (nth 1 lambda))
305 (body (cdr (cdr lambda))) 306 (body (cdr (cdr lambda)))
306 optionalp restp 307 optionalp restp
307 bindings) 308 bindings)
308 (if (and (stringp (car body)) (cdr body)) 309 (if (and (stringp (car body)) (cdr body))