-
- Downloads
DYNAMIC-EXTENT rest args. Currently for x86 only. Speed must be
greater than safety for stack-allocation to actually happen, which is what ACL defaults to. Use boot15.lisp to bootstrap. * src/bootfiles/18e/boot15.lisp: New file. * src/compiler/node.lisp (leaf): Add slot dynamic-extent. * src/compiler/x86/macros.lisp (load-size, inline-allocation) (not-inline-allocation): Extract from function allocation. (stack-allocation): New function. (allocation): Add arg dynamic-extent. Call stack-allocation if dynamic-extent is true, and speed > safety. * src/compiler/x86/call.lisp (listify-rest-args): Add constant third arg, and pass it to allocation. * src/code/class.lisp (find-layout): Put part in #-bootstrap-dynamic-extent. * src/compiler/ir1tran.lisp (process-dynamic-extent-declaration): New function. (*suppress-dynamic-extent-declaration*): New variable. (process-1-declaration): Call process-dynamic-extent-declaration. (convert-more-entry) [#+x86]: Call %listify-rest-args with third arg dynamic-extent. * src/compiler/eval-comp.lisp (%listify-rest-args) [#+x86]: * src/compiler/fndb.lisp (%listify-rest-args) [#+x86]: Add third arg for dynamic-extent. Possibly temporary workaround for SBCL build problems caused by a situation like (defvar *foo*) (declaim (type foo *foo*)) (defstruct foo) (defun foo () (let ((*foo* (some-unknown-function))) ...)) When a type check is being generated for the local binding of *foo*, *foo*'s type in the info database is still an unknown-type. The typep transform generates a call to %instance-typep, because it knows that foo is an instance. The deftransform for %instance-typep does not run, so an actual call to %instance-typep is being generated. A function %instance-typep doesn't exist at run time, though. * src/compiler/ir1tran.lisp (find-free-variable): If the variable's type is an unknown-type, reparse it, and change the type in the info database.
Showing
- bootfiles/18e/boot15.lisp 21 additions, 0 deletionsbootfiles/18e/boot15.lisp
- code/class.lisp 2 additions, 1 deletioncode/class.lisp
- compiler/eval-comp.lisp 3 additions, 3 deletionscompiler/eval-comp.lisp
- compiler/fndb.lisp 2 additions, 2 deletionscompiler/fndb.lisp
- compiler/ir1tran.lisp 53 additions, 21 deletionscompiler/ir1tran.lisp
- compiler/locall.lisp 4 additions, 1 deletioncompiler/locall.lisp
- compiler/node.lisp 4 additions, 1 deletioncompiler/node.lisp
- compiler/x86/call.lisp 30 additions, 27 deletionscompiler/x86/call.lisp
- compiler/x86/macros.lisp 137 additions, 110 deletionscompiler/x86/macros.lisp
- general-info/release-19a.txt 5 additions, 0 deletionsgeneral-info/release-19a.txt
Loading
Please register or sign in to comment