[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