diff options
author | Marius Vollmer <mvo@zagadka.de> | 1997-10-02 15:00:03 +0000 |
---|---|---|
committer | Marius Vollmer <mvo@zagadka.de> | 1997-10-02 15:00:03 +0000 |
commit | e71575d92598e028698730fd7e380452c30100da (patch) | |
tree | 8e31d21def11d9141f2d8bb324309320724609ee /libguile/root.h | |
parent | bb35f3151b168022db4d3a04376182f9604371d5 (diff) | |
download | guile-e71575d92598e028698730fd7e380452c30100da.tar.gz |
* root.c (cwdr_inner_body, cwdr_body): Remove "inner" from name,
there is now only one catch.
(cwdr_outer_body): Removed.
(cwdr_handler): New function.
(scm_internal_cwdr): New function to perform the function of cwdr
but take args that are more useful to C code. Also, the handler
is now invoked *outside* of the new dynamic root, like the docs
say. We no longer have to catch absolutely all errors, the caller
is responsible for using a handler that does not throw, if he
wants that.
(cwdr): Reimplemented in terms of scm_internal_cwdr.
* root.h (scm_internal_cwdr): New prototype.
* root.c (USE_STACKJMPBUF): New define to activate a stack-based
allocation of the jumpbuf of a root continuation. The changes
below are controlled by it. They are now deactivated.
(scm_internal_cwdr): Allocate the scm_contregs on the stack. Set
the JMPBUF of the scm_rootcont to NULL before returning.
Diffstat (limited to 'libguile/root.h')
-rw-r--r-- | libguile/root.h | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/libguile/root.h b/libguile/root.h index 049b1d9e4..8f1545f85 100644 --- a/libguile/root.h +++ b/libguile/root.h @@ -49,6 +49,7 @@ #include "libguile/__scm.h" #include "libguile/debug.h" +#include "libguile/throw.h" @@ -155,6 +156,11 @@ extern struct scm_root_state *scm_root; extern SCM scm_make_root SCM_P ((SCM parent)); +extern SCM scm_internal_cwdr SCM_P ((scm_catch_body_t body, + void *body_data, + scm_catch_handler_t handler, + void *handler_data, + SCM_STACKITEM *stack_start)); extern SCM scm_call_with_dynamic_root SCM_P ((SCM thunk, SCM handler)); extern SCM scm_apply_with_dynamic_root SCM_P ((SCM proc, SCM a1, SCM args, SCM handler)); extern SCM scm_call_catching_errors SCM_P ((SCM (*thunk)(), SCM (*err_filter)(), void * closure)); |