[movitz-cvs] CVS update: movitz/special-operators-cl.lisp
Frode Vatvedt Fjeld
ffjeld at common-lisp.net
Mon Oct 11 13:48:08 UTC 2004
Update of /project/movitz/cvsroot/movitz
In directory common-lisp.net:/tmp/cvs-serv30369
Modified Files:
special-operators-cl.lisp
Log Message:
Make "lexical" unwind-protects work (for some definition of work..)
Date: Mon Oct 11 15:48:07 2004
Author: ffjeld
Index: movitz/special-operators-cl.lisp
diff -u movitz/special-operators-cl.lisp:1.26 movitz/special-operators-cl.lisp:1.27
--- movitz/special-operators-cl.lisp:1.26 Fri Oct 8 12:26:38 2004
+++ movitz/special-operators-cl.lisp Mon Oct 11 15:48:07 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.26 2004/10/08 10:26:38 ffjeld Exp $
+;;;; $Id: special-operators-cl.lisp,v 1.27 2004/10/11 13:48:07 ffjeld Exp $
;;;;
;;;;------------------------------------------------------------------
@@ -721,7 +721,9 @@
(movitz-env-get tag 'go-tag nil env)
(assert (and label tagbody-env) ()
"Go-tag ~W is not visible." tag)
- (if (eq funobj (movitz-environment-funobj tagbody-env))
+ (if (and (eq funobj (movitz-environment-funobj tagbody-env))
+ ;; any unwind-protects between here and there?
+ (null (nth-value 2 (stack-delta env tagbody-env))))
(compiler-values ()
:returns :non-local-exit
:code `((:lexical-control-transfer nil :nothing ,env ,tagbody-env ,label)))
@@ -1210,6 +1212,7 @@
(make-instance 'located-binding
:name (gensym "up-next-continuation-step-"))))
(unwind-protect-env (make-instance 'unwind-protect-env
+ :cleanup-form (cons 'muerte.cl:progn cleanup-forms)
:uplink continuation-env
:funobj (movitz-environment-funobj env))))
(with-labels (unwind-protect (cleanup-label cleanup-entry continue continue-label))
More information about the Movitz-cvs
mailing list