Update of /project/movitz/cvsroot/movitz In directory common-lisp.net:/tmp/cvs-serv5428
Modified Files: special-operators-cl.lisp Log Message: Produce some extra defensive code at catch targets.
Date: Fri Jun 11 14:34:02 2004 Author: ffjeld
Index: movitz/special-operators-cl.lisp diff -u movitz/special-operators-cl.lisp:1.18 movitz/special-operators-cl.lisp:1.19 --- movitz/special-operators-cl.lisp:1.18 Wed Jun 9 10:26:07 2004 +++ movitz/special-operators-cl.lisp Fri Jun 11 14:34:02 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.18 2004/06/09 17:26:07 ffjeld Exp $ +;;;; $Id: special-operators-cl.lisp,v 1.19 2004/06/11 21:34:02 ffjeld Exp $ ;;;; ;;;;------------------------------------------------------------------
@@ -1165,8 +1165,13 @@ body-code `((:popl :ebp) ; This value is identical to current EBP. ,exit-point - (:leal (:esp ,(+ -8 16)) :esp) - (:locally (:popl (:edi (:edi-offset dynamic-env))))))))) + (:leal (:esp ,(+ -8 16)) :esp)) + (if (not *compiler-produce-defensive-code*) + `((:locally (:popl (:edi (:edi-offset dynamic-env))))) + `((:xchgl :ecx (:esp)) + (:locally (:bound (:edi (:edi-offset stack-bottom)) :ecx)) + (:locally (:movl :ecx (:edi (:edi-offset dynamic-env)))) + (:popl :ecx)))))))
(define-special-operator unwind-protect (&all all &form form &env env) (destructuring-bind (protected-form &body cleanup-forms)