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:
parent
8bb7f6466b
commit
b6609fc78a
7 changed files with 27 additions and 11 deletions
|
@ -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.
|
||||
|
|
|
@ -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"
|
||||
}
|
||||
|
|
|
@ -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));
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue