[movitz-cvs] CVS update: movitz/special-operators-cl.lisp
Frode Vatvedt Fjeld
ffjeld at common-lisp.net
Fri Jun 11 21:34:02 UTC 2004
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)
More information about the Movitz-cvs
mailing list