-
- Downloads
"README.md" did not exist on "7534898c2e414172cda3d7d8486a868038420398"
Dynamic-extent closures for x86. Use boot15.lisp for
bootstrapping. (defun prn (fn) (print (funcall fn))) (defun foo (x) (flet ((bar () x)) (declare (dynamic-extent #'bar)) (prn #'bar))) => The closure for BAR is allocated from the stack * src/compiler/node.lisp (lexenv): Add slot dynamic-extent. * src/compiler/ir1util.lisp (make-lexenv): Add keyword arg for dynamic-extent. * src/code/defstruct.lisp (%redefine-defstruct) [#+bootstrap-dynamic-extent]: Definition that corresponds to to the clobber-it restart. * src/compiler/ir1tran.lisp (process-dynamic-extent-declaration): Rewritten. * src/compiler/x86/alloc.lisp (make-closure): Add constant arg dynamic-extent, and use it for allocation. * src/compiler/ir2tran.lisp (ir2-convert-closure) [#+x86]: Pass dynamic-extent to the make-closure vop.
Showing
- code/defstruct.lisp 8 additions, 1 deletioncode/defstruct.lisp
- compiler/ir1tran.lisp 38 additions, 26 deletionscompiler/ir1tran.lisp
- compiler/ir1util.lisp 4 additions, 3 deletionscompiler/ir1util.lisp
- compiler/ir2tran.lisp 11 additions, 3 deletionscompiler/ir2tran.lisp
- compiler/node.lisp 8 additions, 3 deletionscompiler/node.lisp
- compiler/x86/alloc.lisp 13 additions, 11 deletionscompiler/x86/alloc.lisp
- general-info/release-19a.txt 6 additions, 5 deletionsgeneral-info/release-19a.txt
Loading
Please register or sign in to comment