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

* init.c (scm_start_stack): Removed initialization of

scm_the_last_stack_var.

* backtrace.h: Declare scm_the_last_stack_var.

* backtrace.c: Define scm_the_last_stack_var.

* root.c (mark_root): Don't mark the_last_stack_var.

* root.h (scm_root_state): Removed the_last_stack_var.

* throw.c: Added #include "fluids.h"
(ss_handler): `the-last-stack' is now a fluid.

* (backtrace.h, backtrace.c, throw.c): Renamed the_last_stack_var
--> the_last_stack_fluid.

* backtrace.c: Added #include "fluids.h"
(scm_init_backtrace): Initialize `the-last-stack' to a fluid.
(scm_backtrace): `the-last-stack' is now a fluid.

* init.c (scm_boot_guile_1): Moved call to scm_init_backtrace
after scm_init_fluids.
This commit is contained in:
Mikael Djurfeldt 1997-11-29 10:49:18 +00:00
parent 8bb7f6466b
commit b6609fc78a
7 changed files with 27 additions and 11 deletions

View file

@ -1,5 +1,22 @@
Sat Nov 29 01:16:53 1997 Mikael Djurfeldt <mdj@kenneth>
* init.c (scm_start_stack): Removed initialization of
scm_the_last_stack_var.
* backtrace.h: Declare scm_the_last_stack_var.
* backtrace.c: Define scm_the_last_stack_var.
* root.c (mark_root): Don't mark the_last_stack_var.
* root.h (scm_root_state): Removed the_last_stack_var.
* throw.c: Added #include "fluids.h"
(ss_handler): `the-last-stack' is now a fluid.
* (backtrace.h, backtrace.c, throw.c): Renamed the_last_stack_var
--> the_last_stack_fluid.
* backtrace.c: Added #include "fluids.h"
(scm_init_backtrace): Initialize `the-last-stack' to a fluid.
(scm_backtrace): `the-last-stack' is now a fluid.

View file

@ -68,6 +68,8 @@
return SCM_BOOL_F;
#endif
SCM scm_the_last_stack_fluid;
static void display_header SCM_P ((SCM source, SCM port));
static void
display_header (source, port)
@ -539,7 +541,7 @@ SCM_PROC(s_backtrace, "backtrace", 0, 0, 0, scm_backtrace);
SCM
scm_backtrace ()
{
SCM the_last_stack = scm_fluid_ref (SCM_CDR (scm_the_last_stack_var));
SCM the_last_stack = scm_fluid_ref (SCM_CDR (scm_the_last_stack_fluid));
if (SCM_NFALSEP (the_last_stack))
{
scm_newline (scm_cur_outp);
@ -571,7 +573,7 @@ void
scm_init_backtrace ()
{
SCM f = scm_make_fluid ();
scm_the_last_stack_var = scm_sysintern ("the-last-stack", f);
scm_the_last_stack_fluid = scm_sysintern ("the-last-stack", f);
#include "backtrace.x"
}

View file

@ -49,6 +49,8 @@
#include "libguile/__scm.h"
extern SCM scm_the_last_stack_fluid;
void scm_display_error_message SCM_P ((SCM message, SCM args, SCM port));
SCM scm_display_error SCM_P ((SCM stack, SCM port, SCM subr, SCM message, SCM args, SCM rest));
SCM scm_display_backtrace SCM_P ((SCM stack, SCM port, SCM first, SCM depth));

View file

@ -145,8 +145,6 @@ scm_start_stack (base)
scm_top_level_lookup_closure_var = SCM_BOOL_F;
scm_system_transformer = SCM_BOOL_F;
scm_the_last_stack_var = SCM_BOOL_F;
scm_root->fluids = scm_make_initial_fluids ();
/* Create an object to hold the root continuation.

View file

@ -93,7 +93,6 @@ mark_root (root)
scm_gc_mark (s->fluids);
scm_gc_mark (s->top_level_lookup_closure_var);
scm_gc_mark (s->system_transformer);
scm_gc_mark (s->the_last_stack_var);
return SCM_ROOT_STATE (root) -> parent;
}

View file

@ -115,8 +115,6 @@ typedef struct scm_root_state
SCM system_transformer;
SCM top_level_lookup_closure_var;
SCM the_last_stack_var;
SCM handle; /* The root object for this root state */
SCM parent; /* The parent root object */
} scm_root_state;
@ -143,7 +141,6 @@ typedef struct scm_root_state
#define scm_top_level_lookup_closure_var \
(scm_root->top_level_lookup_closure_var)
#define scm_system_transformer (scm_root->system_transformer)
#define scm_the_last_stack_var (scm_root->the_last_stack_var)
#ifdef USE_THREADS
#define scm_root ((scm_root_state *) SCM_THREAD_LOCAL_DATA)

View file

@ -55,6 +55,7 @@
#include "continuations.h"
#include "stackchk.h"
#include "stacks.h"
#include "fluids.h"
#include "throw.h"
@ -339,14 +340,14 @@ scm_internal_lazy_catch (tag, body, body_data, handler, handler_data)
/* scm_internal_stack_catch
Use this one if you want debugging information to be stored in
scm_the_last_stack_var on error. */
scm_the_last_stack_fluid on error. */
static SCM
ss_handler (void *data, SCM tag, SCM throw_args)
{
/* Save the stack */
SCM_SETCDR (scm_the_last_stack_var,
scm_make_stack (scm_cons (SCM_BOOL_T, SCM_EOL)));
scm_fluid_set_x (SCM_CDR (scm_the_last_stack_fluid),
scm_make_stack (scm_cons (SCM_BOOL_T, SCM_EOL)));
/* Throw the error */
return scm_throw (tag, throw_args);
}