[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