[Top][All Lists]

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

[Guile-commits] GNU Guile branch, master, updated. release_1-9-6-120-gec

From: Andy Wingo
Subject: [Guile-commits] GNU Guile branch, master, updated. release_1-9-6-120-gecdf155
Date: Sun, 10 Jan 2010 22:09:12 +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".

The branch, master has been updated
       via  ecdf15573b4734488893a03500312f18575819ce (commit)
      from  cf8ec359cc0e4a02e11c71f194fc076c6f9168c1 (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 ecdf15573b4734488893a03500312f18575819ce
Author: Andy Wingo <address@hidden>
Date:   Sun Jan 10 23:10:24 2010 +0100

    show args to subr calls in backtraces
    * module/system/vm/frame.scm (frame-arguments): For subrs, we don't get
      names in the lambda-list, we get #f instead. But still, parse out the
      args in that case, assuming they are on the stack in that order.


Summary of changes:
 module/system/vm/frame.scm |   17 +++++++++++------
 1 files changed, 11 insertions(+), 6 deletions(-)

diff --git a/module/system/vm/frame.scm b/module/system/vm/frame.scm
index c28197b..ea012fa 100644
--- a/module/system/vm/frame.scm
+++ b/module/system/vm/frame.scm
@@ -1,6 +1,6 @@
 ;;; Guile VM frame functions
-;;; Copyright (C) 2001, 2005, 2009 Free Software Foundation, Inc.
+;;; Copyright (C) 2001, 2005, 2009, 2010 Free Software Foundation, Inc.
 ;;; This library is free software; you can redistribute it and/or
 ;;; modify it under the terms of the GNU Lesser General Public
@@ -74,16 +74,21 @@
                          (frame-instruction-pointer frame))
     ;; case 1
     => (lambda (formals)
-         (let lp ((formals formals))
+         (let lp ((formals formals) (i 0))
            (pmatch formals
              (() '())
              ((,x . ,rest) (guard (symbol? x))
-              (cons (frame-binding-ref frame x) (lp rest)))
-             ((,x . ,rest)
-              ;; could be a keyword
-              (cons x (lp rest)))
+              (cons (frame-binding-ref frame x) (lp rest (1+ i))))
+             ((,x . ,rest) (guard (keyword? x))
+              (cons x (lp rest i)))
+             ((,x . ,rest) (guard (not x) (< i (frame-num-locals frame)))
+              ;; an arg, but we don't know the name. ref by index.
+              (cons (frame-local-ref frame i) (lp rest (1+ i))))
              (,rest (guard (symbol? rest))
               (frame-binding-ref frame rest))
+             (,rest (guard (not rest) (< i (frame-num-locals frame)))
+              ;; again, no name.
+              (frame-local-ref frame i))
              ;; let's not error here, as we are called during
              ;; backtraces...
              (else '???)))))

GNU Guile

reply via email to

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