guile-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Guile-commits] GNU Guile branch, master, updated. release_1-9-3-5-g9368


From: Neil Jerram
Subject: [Guile-commits] GNU Guile branch, master, updated. release_1-9-3-5-g93683f9
Date: Wed, 16 Sep 2009 23:20:47 +0000

This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU Guile".

http://git.savannah.gnu.org/cgit/guile.git/commit/?id=93683f9bb16680f66c0784b14ca57bb3b5816ce2

The branch, master has been updated
       via  93683f9bb16680f66c0784b14ca57bb3b5816ce2 (commit)
       via  ba20f78a6c91e0535d205f7f5291d860c1bcbc27 (commit)
       via  931c82f5b02213c8e9e1cca2b21672b809970e18 (commit)
       via  a29c00447ba91458e35f81c7715c333ff1641018 (commit)
      from  eb350124a85dd4daf39bacbdc50452ef87a33a43 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit 93683f9bb16680f66c0784b14ca57bb3b5816ce2
Author: Neil Jerram <address@hidden>
Date:   Thu Sep 17 00:17:58 2009 +0100

    Convenience for running GDB on Guile in Emacs
    
    * meta/gdb-uninstalled-guile.in: Add (in a comment) an elisp form that
      can be evaluated to run GDB on Guile in Emacs.

commit ba20f78a6c91e0535d205f7f5291d860c1bcbc27
Author: Neil Jerram <address@hidden>
Date:   Thu Sep 17 00:14:16 2009 +0100

    Fix omission of VM frames from backtrace
    
    From the time when a #<program> was a SMOB, really_make_boot_program
    in vm.c was still using SCM_SET_SMOB_FLAGS to set the
    SCM_F_PROGRAM_IS_BOOT flag - which meant that it was setting flag
    1<<32 :-) which obviously was then missed by the SCM_PROGRAM_IS_BOOT
    calls in stacks.c.
    
    * libguile/programs.h (SCM_F_PROGRAM_IS_BOOT): Use a less significant
      bit for this flag, now that programs use a tc7 type.
    
    * libguile/vm.c (really_make_boot_program): Don't use
      SCM_SET_SMOB_FLAGS, now that programs aren't SMOBs.

commit 931c82f5b02213c8e9e1cca2b21672b809970e18
Author: Neil Jerram <address@hidden>
Date:   Thu Sep 17 00:05:06 2009 +0100

    Fix incorrect stack count warnings
    
    * libguile/stacks.c (stack_depth): Decrement depth count for a
      macro-expansion frame.  (Missing this decrement will cause a "stack
      count incorrect" warning but is actually benign, as it only means
      that scm_make_stack allocates a bit more space for the stack than it
      really needs.)
    
      (read_frames): Increment count of remaining unused frames, when
      cutting out a macro transformer application frame.  (Missing this
      increment could cause the "stack count incorrect" warning, and could
      make read_frames think it's filled up all the available stack frames
      when there's actually still one frame unused; this wasn't benign,
      because it could cause information to be missing from a stack
      trace.)

commit a29c00447ba91458e35f81c7715c333ff1641018
Author: Neil Jerram <address@hidden>
Date:   Wed Sep 16 23:59:15 2009 +0100

    Remove unhittable else branch for nonexistent type of debug frame
    
    * libguile/stacks.c (stack_depth): Remove unhittable else branch
      apparently catering to a kind of frame that isn't an eval, apply or
      void frame - in fact there are no other kinds of frames.

-----------------------------------------------------------------------

Summary of changes:
 libguile/programs.h           |    2 +-
 libguile/stacks.c             |   10 +++++++---
 libguile/vm.c                 |    2 +-
 meta/gdb-uninstalled-guile.in |    3 +++
 4 files changed, 12 insertions(+), 5 deletions(-)

diff --git a/libguile/programs.h b/libguile/programs.h
index d52631f..c846c1b 100644
--- a/libguile/programs.h
+++ b/libguile/programs.h
@@ -26,7 +26,7 @@
  * Programs
  */
 
-#define SCM_F_PROGRAM_IS_BOOT (1<<16)
+#define SCM_F_PROGRAM_IS_BOOT 0x100
 
 #define SCM_PROGRAM_P(x)       (!SCM_IMP (x) && SCM_TYP7(x) == scm_tc7_program)
 #define SCM_PROGRAM_OBJCODE(x) (SCM_CELL_OBJECT_1 (x))
diff --git a/libguile/stacks.c b/libguile/stacks.c
index 45566ca..a701863 100644
--- a/libguile/stacks.c
+++ b/libguile/stacks.c
@@ -143,6 +143,11 @@ stack_depth (scm_t_debug_frame *dframe, scm_t_ptrdiff 
offset, SCM vmframe,
        {
          scm_t_debug_info *info = RELOC_INFO (dframe->info, offset);
          scm_t_debug_info *vect = RELOC_INFO (dframe->vect, offset);
+         /* If current frame is a macro during expansion, we should
+            skip the previously recorded macro transformer
+            application frame.  */
+         if (SCM_MACROEXPP (*dframe) && n > 0)
+           --n;
          n += (info - vect) / 2 + 1;
          /* Data in the apply part of an eval info frame comes from previous
             stack frame if the scm_t_debug_info vector is overflowed. */
@@ -151,7 +156,7 @@ stack_depth (scm_t_debug_frame *dframe, scm_t_ptrdiff 
offset, SCM vmframe,
              && !SCM_UNBNDP (info[1].a.proc))
             ++n;
        }
-      else if (SCM_APPLYFRAMEP (*dframe))
+      else
         {
           scm_t_debug_info *vect = RELOC_INFO (dframe->vect, offset);
           if (SCM_PROGRAM_P (vect[0].a.proc))
@@ -177,8 +182,6 @@ stack_depth (scm_t_debug_frame *dframe, scm_t_ptrdiff 
offset, SCM vmframe,
           else
             ++n; /* increment for non-program apply frame */
         }
-      else
-       ++n;
     }
   if (dframe && SCM_VOIDFRAMEP (*dframe))
     *id = RELOC_INFO(dframe->vect, offset)[0].id;
@@ -282,6 +285,7 @@ read_frames (scm_t_debug_frame *dframe, scm_t_ptrdiff 
offset,
            {
              *(iframe - 1) = *iframe;
              --iframe;
+             ++n;
            }
          info =  RELOC_INFO (dframe->info, offset);
          vect =  RELOC_INFO (dframe->vect, offset);
diff --git a/libguile/vm.c b/libguile/vm.c
index 4e4a361..d41c8cd 100644
--- a/libguile/vm.c
+++ b/libguile/vm.c
@@ -203,7 +203,7 @@ really_make_boot_program (long nargs)
                              sizeof (struct scm_objcode) + sizeof (text));
   ret = scm_make_program (scm_bytecode_to_objcode (u8vec),
                           SCM_BOOL_F, SCM_BOOL_F);
-  SCM_SET_SMOB_FLAGS (ret, SCM_F_PROGRAM_IS_BOOT);
+  SCM_SET_CELL_WORD_0 (ret, SCM_CELL_WORD_0 (ret) | SCM_F_PROGRAM_IS_BOOT);
 
   return ret;
 }
diff --git a/meta/gdb-uninstalled-guile.in b/meta/gdb-uninstalled-guile.in
index d55e215..d1604cc 100644
--- a/meta/gdb-uninstalled-guile.in
+++ b/meta/gdb-uninstalled-guile.in
@@ -38,3 +38,6 @@ XDG_CACHE_HOME=${top_builddir}/cache
 export XDG_CACHE_HOME
 exec ${top_builddir}/meta/uninstalled-env libtool --mode=execute \
     gdb --args ${top_builddir}/libguile/guile "$@"
+
+# And for GDB in Emacs, evaluate this form:
+# (gdb "@top_builddir_absolute@/meta/uninstalled-env ./libtool --mode=execute 
gdb --args @top_builddir_absolute@/libguile/guile")


hooks/post-receive
-- 
GNU Guile




reply via email to

[Prev in Thread] Current Thread [Next in Thread]