From: Alexey D. <ade...@us...> - 2004-08-08 05:44:23
|
Update of /cvsroot/sbcl/sbcl/src/compiler/x86 In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv23479/src/compiler/x86 Modified Files: Tag: sbcl-0-8-13-dx alloc.lisp Log Message: 0.8.13-dx.1: This is an EXPERIMENTAL branch, devoted to implementation of stack-allocating of dynamic-extent arguments in local calls. * Annotate DX LVARs of arguments during local call recognition; areas of DX are protected with CLEANUPs; * the final decision on stack allocation is made by physical anvironment analysis with help of new "optimizer" kind STACK-ALLOCATE-RESULT; * stack analysis finds appropriate places to free stack; note, that stack-allocated objects cannot be moved; * LIST and LIST* on X86 can allocate result on stack. Note, that this version does not work on anything except X86. Index: alloc.lisp =================================================================== RCS file: /cvsroot/sbcl/sbcl/src/compiler/x86/alloc.lisp,v retrieving revision 1.12 retrieving revision 1.12.2.1 diff -u -d -r1.12 -r1.12.2.1 --- alloc.lisp 21 May 2004 12:17:49 -0000 1.12 +++ alloc.lisp 8 Aug 2004 05:44:15 -0000 1.12.2.1 @@ -40,7 +40,8 @@ (storew reg ,list ,slot list-pointer-lowtag)))) (let ((cons-cells (if star (1- num) num))) (pseudo-atomic - (allocation res (* (pad-data-block cons-size) cons-cells) node) + (allocation res (* (pad-data-block cons-size) cons-cells) node + (awhen (sb!c::node-lvar node) (sb!c::lvar-dynamic-extent it))) (inst lea res (make-ea :byte :base res :disp list-pointer-lowtag)) (move ptr res) |