Update of /project/movitz/cvsroot/movitz In directory common-lisp.net:/tmp/cvs-serv18604
Modified Files: special-operators.lisp Log Message: Added support for stack-allocated cons cells.
Date: Tue Jan 4 12:35:52 2005 Author: ffjeld
Index: movitz/special-operators.lisp diff -u movitz/special-operators.lisp:1.46 movitz/special-operators.lisp:1.47 --- movitz/special-operators.lisp:1.46 Mon Jan 3 12:55:36 2005 +++ movitz/special-operators.lisp Tue Jan 4 12:35:48 2005 @@ -8,7 +8,7 @@ ;;;; Author: Frode Vatvedt Fjeld frodef@acm.org ;;;; Created at: Fri Nov 24 16:22:59 2000 ;;;; -;;;; $Id: special-operators.lisp,v 1.46 2005/01/03 11:55:36 ffjeld Exp $ +;;;; $Id: special-operators.lisp,v 1.47 2005/01/04 11:35:48 ffjeld Exp $ ;;;; ;;;;------------------------------------------------------------------
@@ -1370,3 +1370,23 @@ :env allocation-env))))
+(define-special-operator muerte::compiled-cons + (&all all &form form &env env &funobj funobj) + (destructuring-bind (car cdr) + (cdr form) + (let ((dynamic-extent-scope (find-dynamic-extent-scope env))) + (cond + (dynamic-extent-scope + (compiler-values () + :returns :eax + :functional-p t + :type 'cons + :code (append (make-compiled-two-forms-into-registers car :eax cdr :ebx funobj env) + `((:stack-cons ,(make-instance 'movitz-cons) + ,dynamic-extent-scope))))) + (t (compiler-values () + :returns :eax + :functional-p t + :type 'cons + :code (append (make-compiled-two-forms-into-registers car :eax cdr :ebx funobj env) + `((:globally (:call (:edi (:edi-offset fast-cons))))))))))))