From 295fb2ac59b66c0e2470325a42c8e58c135ed044 Mon Sep 17 00:00:00 2001 From: Stefan Monnier Date: Fri, 11 Feb 2011 17:30:02 -0500 Subject: 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. --- lisp/emacs-lisp/byte-lexbind.el | 1 + 1 file changed, 1 insertion(+) (limited to 'lisp/emacs-lisp/byte-lexbind.el') diff --git a/lisp/emacs-lisp/byte-lexbind.el b/lisp/emacs-lisp/byte-lexbind.el index 313c4b6ad0f..06353e2eea8 100644 --- a/lisp/emacs-lisp/byte-lexbind.el +++ b/lisp/emacs-lisp/byte-lexbind.el @@ -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 -- cgit v1.2.3