Update of /project/movitz/cvsroot/movitz In directory common-lisp.net:/tmp/cvs-serv30553
Modified Files: special-operators.lisp Log Message: Added a special case to muerte:with-cloak.
Date: Fri Feb 13 05:39:37 2004 Author: ffjeld
Index: movitz/special-operators.lisp diff -u movitz/special-operators.lisp:1.10 movitz/special-operators.lisp:1.11 --- movitz/special-operators.lisp:1.10 Thu Feb 12 16:57:19 2004 +++ movitz/special-operators.lisp Fri Feb 13 05:39:37 2004 @@ -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.10 2004/02/12 21:57:19 ffjeld Exp $ +;;;; $Id: special-operators.lisp,v 1.11 2004/02/13 10:39:37 ffjeld Exp $ ;;;; ;;;;------------------------------------------------------------------
@@ -915,6 +915,24 @@ cloaked-code `((:popl :ecx) (:globally (:call (:edi (:edi-offset pop-current-values)))))))) + ((and (not (cdr cloaked-code)) + (instruction-is (car cloaked-code) :incf-lexvar)) + (destructuring-bind (binding delta &key protect-registers) + (cdar cloaked-code) + (let ((protected-register (case cover-returns + ((:eax :ebx :ecx :edx) cover-returns) + (t :edx)))) + (assert (not (member protected-register protect-registers)) () + "Can't protect ~S. Sorry, this opertor must be smartened up." + protected-register) + (compiler-values () + :returns protected-register + :type cover-type + :code (append cover-code + (make-result-and-returns-glue protected-register cover-returns) + `((:incf-lexvar ,binding ,delta + :protect-registers ,(cons protected-register + protect-registers)))))))) (t ;; just put the (singular) result of form1 on the stack.. (when (not (typep cover-returns 'keyword)) ;; if it's a (non-modified) lexical-binding, we can do better..