* init.c (scm_start_stack): Removed initialization of
authorMikael Djurfeldt <djurfeldt@nada.kth.se>
Sat, 29 Nov 1997 10:49:18 +0000 (10:49 +0000)
committerMikael Djurfeldt <djurfeldt@nada.kth.se>
Sat, 29 Nov 1997 10:49:18 +0000 (10:49 +0000)
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.

libguile/ChangeLog
libguile/backtrace.c
libguile/backtrace.h
libguile/init.c
libguile/root.c
libguile/root.h
libguile/throw.c

index 6bdee91..0948248 100644 (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.
index d66abb8..c216515 100644 (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"
 }
index fad89ec..fd630af 100644 (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));
index aec3852..cb2bd8c 100644 (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.
index 291de56..5de8e19 100644 (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;
 }
 
index 8f1545f..598bade 100644 (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)
index b83b78f..4d90ba6 100644 (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)
 \f
 /* 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);
 }