[movitz-cvs] CVS update: movitz/losp/muerte/basic-macros.lisp

Frode Vatvedt Fjeld ffjeld at common-lisp.net
Fri Nov 12 14:52:09 UTC 2004


Update of /project/movitz/cvsroot/movitz/losp/muerte
In directory common-lisp.net:/tmp/cvs-serv9560

Modified Files:
	basic-macros.lisp 
Log Message:
Changed exact-throw, the basic operator for dynamic control transfer,
quite a bit. The (ill-specified) primitive-function
dynamic-locate-catch-tag is removed, its essential job is now
performed by the normal function find-catch-tag.

Date: Fri Nov 12 15:52:08 2004
Author: ffjeld

Index: movitz/losp/muerte/basic-macros.lisp
diff -u movitz/losp/muerte/basic-macros.lisp:1.44 movitz/losp/muerte/basic-macros.lisp:1.45
--- movitz/losp/muerte/basic-macros.lisp:1.44	Thu Nov 11 20:24:52 2004
+++ movitz/losp/muerte/basic-macros.lisp	Fri Nov 12 15:52:05 2004
@@ -9,7 +9,7 @@
 ;;;; Created at:    Wed Nov  8 18:44:57 2000
 ;;;; Distribution:  See the accompanying file COPYING.
 ;;;;                
-;;;; $Id: basic-macros.lisp,v 1.44 2004/11/11 19:24:52 ffjeld Exp $
+;;;; $Id: basic-macros.lisp,v 1.45 2004/11/12 14:52:05 ffjeld Exp $
 ;;;;                
 ;;;;------------------------------------------------------------------
 
@@ -116,7 +116,11 @@
     `(compiled-cond (,test-form ,then-form))))
 
 (defmacro throw (tag result-form)
-  `(exact-throw ,tag 0 ,result-form))
+  (let ((tag-var (gensym "throw-tag-")))
+    `(let ((,tag-var ,tag))
+       (exact-throw (find-catch-tag ,tag-var)
+		    ,result-form
+		    (error 'throw-error :tag ,tag-var)))))
 
 (defmacro when (test-form &rest forms)
   `(cond (,test-form , at forms)))





More information about the Movitz-cvs mailing list