From: Marius Vollmer Date: Wed, 7 Jan 2004 20:21:30 +0000 (+0000) Subject: * dynwind.h, dynwind.c (scm_i_dowinds): Removed 'explicit' X-Git-Url: https://git.hcoop.net/bpt/guile.git/commitdiff_plain/14578fa4ea21173bd8360f4ba6e0660028769b42 * dynwind.h, dynwind.c (scm_i_dowinds): Removed 'explicit' argument since it is always zero now. Changed all callers. Removed code for handling fluids. --- diff --git a/libguile/continuations.c b/libguile/continuations.c index 996d5eebf..60322b3af 100644 --- a/libguile/continuations.c +++ b/libguile/continuations.c @@ -239,8 +239,7 @@ copy_stack_and_call (scm_t_contregs *continuation, SCM val, delta = scm_ilength (scm_dynwinds) - scm_ilength (continuation->dynenv); data.continuation = continuation; data.dst = dst; - scm_i_dowinds (continuation->dynenv, delta, 0, - copy_stack, &data); + scm_i_dowinds (continuation->dynenv, delta, copy_stack, &data); scm_last_debug_frame = continuation->dframe; diff --git a/libguile/dynwind.c b/libguile/dynwind.c index 6c2cb6709..ca2fb704d 100644 --- a/libguile/dynwind.c +++ b/libguile/dynwind.c @@ -136,9 +136,9 @@ static scm_t_bits tc16_frame; #define FRAME_REWINDABLE_P(f) (SCM_CELL_WORD_0(f) & FRAME_F_REWINDABLE) static scm_t_bits tc16_winder; -#define WINDER_P(w) SCM_SMOB_PREDICATE (tc16_winder, (w)) -#define WINDER_PROC(w) ((void (*)(void *))SCM_CELL_WORD_1 (w)) -#define WINDER_DATA(w) ((void *)SCM_CELL_WORD_2 (w)) +#define WINDER_P(w) SCM_SMOB_PREDICATE (tc16_winder, (w)) +#define WINDER_PROC(w) ((void (*)(void *))SCM_CELL_WORD_1 (w)) +#define WINDER_DATA(w) ((void *)SCM_CELL_WORD_2 (w)) #define WINDER_F_EXPLICIT (1 << 16) #define WINDER_F_REWIND (1 << 17) @@ -263,12 +263,11 @@ scm_swap_bindings (SCM vars, SCM vals) void scm_dowinds (SCM to, long delta) { - scm_i_dowinds (to, delta, 0, NULL, NULL); + scm_i_dowinds (to, delta, NULL, NULL); } void -scm_i_dowinds (SCM to, long delta, int explicit, - void (*turn_func) (void *), void *data) +scm_i_dowinds (SCM to, long delta, void (*turn_func) (void *), void *data) { tail: if (SCM_EQ_P (to, scm_dynwinds)) @@ -281,8 +280,7 @@ scm_i_dowinds (SCM to, long delta, int explicit, SCM wind_elt; SCM wind_key; - scm_i_dowinds (SCM_CDR (to), 1 + delta, explicit, - turn_func, data); + scm_i_dowinds (SCM_CDR (to), 1 + delta, turn_func, data); wind_elt = SCM_CAR (to); #if 0 @@ -303,11 +301,7 @@ scm_i_dowinds (SCM to, long delta, int explicit, else if (WINDER_P (wind_elt)) { if (WINDER_REWIND_P (wind_elt)) - { - void (*proc) (void *) = WINDER_PROC (wind_elt); - void *data = WINDER_DATA (wind_elt); - proc (data); - } + WINDER_PROC (wind_elt) (WINDER_DATA (wind_elt)); } else { @@ -349,13 +343,8 @@ scm_i_dowinds (SCM to, long delta, int explicit, } else if (WINDER_P (wind_elt)) { - if (!WINDER_REWIND_P (wind_elt) - && (!explicit || WINDER_EXPLICIT_P (wind_elt))) - { - void (*proc) (void *) = WINDER_PROC (wind_elt); - void *data = WINDER_DATA (wind_elt); - proc (data); - } + if (!WINDER_REWIND_P (wind_elt)) + WINDER_PROC (wind_elt) (WINDER_DATA (wind_elt)); } else { diff --git a/libguile/dynwind.h b/libguile/dynwind.h index bf14126a1..f619b46b5 100644 --- a/libguile/dynwind.h +++ b/libguile/dynwind.h @@ -36,7 +36,7 @@ SCM_API SCM scm_internal_dynamic_wind (scm_t_guard before, void *inner_data, void *guard_data); SCM_API void scm_dowinds (SCM to, long delta); -SCM_API void scm_i_dowinds (SCM to, long delta, int explicit, +SCM_API void scm_i_dowinds (SCM to, long delta, void (*turn_func) (void *), void *data); SCM_API void scm_init_dynwind (void);