1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-06-14 15:40:19 +02:00

deprecate the-last-stack

* libguile/backtrace.h (scm_the_last_stack_fluid_var)
* libguile/backtrace.c (scm_init_backtrace): No more
  scm_the_last_stack_fluid_var. The replacement is to resolve
  `the-last-stack' in (ice-9 stack-catch).
  (scm_backtrace_with_highlights): Accordingly, instead of backtracing
  the last stack, backtrace the current stack.

* libguile/throw.h:
* libguile/throw.c:
* libguile/deprecated.h:
* libguile/deprecated.c (scm_internal_stack_catch): Deprecate this
  function.

* module/ice-9/save-stack.scm (the-last-stack): Move here from boot-9.

* module/ice-9/debug.scm:
* module/ice-9/debugger.scm: Use (ice-9 save-stack) for the-last-stack.

* module/ice-9/deprecated.scm (the-last-stack): Add deprecated shim.
This commit is contained in:
Andy Wingo 2010-06-19 13:43:33 +02:00
parent a0d57eedfa
commit ec16eb7847
10 changed files with 89 additions and 92 deletions

View file

@ -252,50 +252,6 @@ scm_c_with_throw_handler (SCM tag,
return scm_with_throw_handler (tag, sbody, shandler);
}
/* scm_internal_stack_catch
Use this one if you want debugging information to be stored in
scm_the_last_stack_fluid_var on error. */
static SCM
ss_handler (void *data SCM_UNUSED, SCM tag, SCM throw_args)
{
/* Save the stack */
scm_fluid_set_x (SCM_VARIABLE_REF (scm_the_last_stack_fluid_var),
scm_make_stack (SCM_BOOL_T, SCM_EOL));
/* Throw the error */
return scm_throw (tag, throw_args);
}
struct cwss_data
{
SCM tag;
scm_t_catch_body body;
void *data;
};
static SCM
cwss_body (void *data)
{
struct cwss_data *d = data;
return scm_c_with_throw_handler (d->tag, d->body, d->data, ss_handler, NULL, 0);
}
SCM
scm_internal_stack_catch (SCM tag,
scm_t_catch_body body,
void *body_data,
scm_t_catch_handler handler,
void *handler_data)
{
struct cwss_data d;
d.tag = tag;
d.body = body;
d.data = body_data;
return scm_internal_catch (tag, cwss_body, &d, handler, handler_data);
}
/* body and handler functions for use with any of the above catch variants */