[movitz-cvs] CVS update: movitz/special-operators.lisp

Frode Vatvedt Fjeld ffjeld at common-lisp.net
Fri Feb 13 10:39:37 UTC 2004


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 at 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..





More information about the Movitz-cvs mailing list