From ccbfefb7cf4c258593dbb9e3a5dcd8f1da784fb3 Mon Sep 17 00:00:00 2001 From: Jim Blandy Date: Fri, 7 Feb 1997 22:38:27 +0000 Subject: [PATCH] * throw.c (scm_internal_lazy_catch): New function. (scm_lazy_catch): Rewritten to use it. (scm_ithrow): Handle the new lazy catch representation. Use SCM_LAZY_CATCH_P, instead of assuming that any wind list entry that doesn't have a jmpbuf is a lazy catch clause. (tc16_lazy_catch, struct lazy_catch, mark_lazy_catch, free_lazy_catch, print_lazy_catch, lazy_catch_funs, make_lazy_catch, SCM_LAZY_CATCH_P): Support funs, including a new smob. (scm_init_throw): Register the new lazy-catch smob type. * throw.h (scm_internal_lazy_catch): decl for new function. --- libguile/throw.h | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/libguile/throw.h b/libguile/throw.h index 26c0d9aa3..be971a576 100644 --- a/libguile/throw.h +++ b/libguile/throw.h @@ -58,6 +58,12 @@ extern SCM scm_internal_catch SCM_P ((SCM tag, scm_catch_handler_t handler, void *handler_data)); +extern SCM scm_internal_lazy_catch SCM_P ((SCM tag, + scm_catch_body_t body, + void *body_data, + scm_catch_handler_t handler, + void *handler_data)); + /* The first argument to scm_body_thunk should be a pointer to one of these. See the implementation of catch in throw.c. */ struct scm_body_thunk_data