Let cconv use :fun-body in special forms that need it.
* lisp/emacs-lisp/cconv.el (cconv-closure-convert): Drop `toplevel' arg. (cconv-closure-convert-toplevel): Remove. (cconv-lookup-let): New fun. (cconv-closure-convert-rec): Don't bother with defs-are-legal. Use :fun-body to handle special forms that require closing their forms. * lisp/emacs-lisp/bytecomp.el (byte-compile-file-form, byte-compile): Use cconv-closure-convert instead of cconv-closure-convert-toplevel. (byte-compile-lambda, byte-compile-make-closure): * lisp/emacs-lisp/byte-lexbind.el (byte-compile-maybe-push-heap-environment): Make sure cconv did its job. * lisp/emacs-lisp/byte-opt.el (byte-optimize-lapcode): Check stack-depth before using it. * lisp/dired.el (dired-desktop-buffer-misc-data): Don't use a dynamic var as function argument.
This commit is contained in:
parent
43e67019df
commit
295fb2ac59
7 changed files with 198 additions and 199 deletions
|
@ -585,6 +585,7 @@ proper scope)."
|
|||
(= nclosures byte-compile-current-num-closures))
|
||||
;; No need to push a heap environment.
|
||||
nil
|
||||
(error "Should have been handled by cconv")
|
||||
;; Have to push one. A heap environment is really just a vector, so
|
||||
;; we emit bytecodes to create a vector. However, the size is not
|
||||
;; fixed yet (the vector can grow if subforms use it to store
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue