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

Frode Vatvedt Fjeld ffjeld at common-lisp.net
Wed Mar 24 18:36:41 UTC 2004


Update of /project/movitz/cvsroot/movitz
In directory common-lisp.net:/tmp/cvs-serv29696

Modified Files:
	special-operators-cl.lisp 
Log Message:
The compiler for m-v-bind was buggy when its binding were lended. This
should fix it.

Date: Wed Mar 24 13:36:41 2004
Author: ffjeld

Index: movitz/special-operators-cl.lisp
diff -u movitz/special-operators-cl.lisp:1.11 movitz/special-operators-cl.lisp:1.12
--- movitz/special-operators-cl.lisp:1.11	Sat Feb 14 12:33:40 2004
+++ movitz/special-operators-cl.lisp	Wed Mar 24 13:36:41 2004
@@ -9,7 +9,7 @@
 ;;;; Created at:    Fri Nov 24 16:31:11 2000
 ;;;; Distribution:  See the accompanying file COPYING.
 ;;;;                
-;;;; $Id: special-operators-cl.lisp,v 1.11 2004/02/14 17:33:40 ffjeld Exp $
+;;;; $Id: special-operators-cl.lisp,v 1.12 2004/03/24 18:36:41 ffjeld Exp $
 ;;;;                
 ;;;;------------------------------------------------------------------
 
@@ -468,7 +468,8 @@
 					     :protect-carry t
 					     :protect-registers (:eax :ebx))
 			       (:store-lexical ,(first lexical-bindings) :eax
-					       :type ,(type-specifier-primary values-type))
+					       :type ,(type-specifier-primary values-type)
+					       :protect-registers (:ebx))
 			       (:init-lexvar ,(second lexical-bindings)
 					     :protect-carry t
 					     :protect-registers (:ebx))
@@ -490,14 +491,17 @@
 				     append
 				       (case pos
 					 (0 `((:init-lexvar ,binding
-							    :protect-registers '(:eax :ebx :ecx))
-					      (:store-lexical ,binding :eax :type ,type)))
+							    :protect-registers (:eax :ebx :ecx))
+					      (:store-lexical ,binding :eax :type ,type
+							      :protect-registers (:eax :ebx :ecx))))
 					 (1 `((:init-lexvar ,binding
-							    :protect-registers '(:ebx :ecx))
-					      (:store-lexical ,binding :edi :type null)
+							    :protect-registers (:ebx :ecx))
+					      (:store-lexical ,binding :edi :type null
+							      :protect-registers (:ecx))
 					      (:cmpl 1 :ecx)
 					      (:jbe ',skip-label)
-					      (:store-lexical ,binding :ebx :type ,type)
+					      (:store-lexical ,binding :ebx :type ,type
+							      :protect-registers (:ecx))
 					      ,skip-label))
 					 (t (if *compiler-use-cmov-p*
 						`((:init-lexvar ,binding :protect-registers '(:ecx))
@@ -506,7 +510,8 @@
 						  (:locally (:cmova (:edi (:edi-offset values
 										       ,(* 4 (- pos 2))))
 								    :eax))
-						  (:store-lexical ,binding :eax :type ,type))
+						  (:store-lexical ,binding :eax :type ,type
+								  :protect-registers (:eax)))
 					      `((:init-lexvar ,binding :protect-registers '(:ecx))
 						(:movl :edi :eax)
 						(:cmpl ,pos :ecx)
@@ -515,7 +520,8 @@
 										    ,(* 4 (- pos 2))))
 								 :eax))
 						,skip-label
-						(:store-lexical ,binding :eax :type ,type)))))))))))))))
+						(:store-lexical ,binding :eax :type ,type
+								:protect-registers (:ecx))))))))))))))))
 	  (compiler-values-bind (&code body-code &returns body-returns-mode)
 	      (compiler-call #'compile-form-unprotected
 		:defaults forward





More information about the Movitz-cvs mailing list