summaryrefslogtreecommitdiff
path: root/libguile/root.h
diff options
context:
space:
mode:
authorMarius Vollmer <mvo@zagadka.de>1997-10-02 15:00:03 +0000
committerMarius Vollmer <mvo@zagadka.de>1997-10-02 15:00:03 +0000
commite71575d92598e028698730fd7e380452c30100da (patch)
tree8e31d21def11d9141f2d8bb324309320724609ee /libguile/root.h
parentbb35f3151b168022db4d3a04376182f9604371d5 (diff)
downloadguile-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.h6
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));