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