1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-05-20 03:30:27 +02:00

* 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.
This commit is contained in:
Jim Blandy 1997-02-07 22:38:27 +00:00
parent 3eed34754c
commit ccbfefb7cf

View file

@ -58,6 +58,12 @@ extern SCM scm_internal_catch SCM_P ((SCM tag,
scm_catch_handler_t handler, scm_catch_handler_t handler,
void *handler_data)); 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 /* The first argument to scm_body_thunk should be a pointer to one of
these. See the implementation of catch in throw.c. */ these. See the implementation of catch in throw.c. */
struct scm_body_thunk_data struct scm_body_thunk_data