From cc588f740fe01cfde08f2cba9914dd59a0206afc Mon Sep 17 00:00:00 2001 From: Andy Wingo Date: Thu, 16 Oct 2008 13:56:41 +0200 Subject: [PATCH] fix backtraces, broken since the program-bindings format change * module/system/vm/frame.scm (frame-bindings): Fix for new binding format; actually use the bindings accessors. (frame-lookup-binding): Clarify. --- module/system/vm/frame.scm | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/module/system/vm/frame.scm b/module/system/vm/frame.scm index 70b82f872..2de0dde07 100644 --- a/module/system/vm/frame.scm +++ b/module/system/vm/frame.scm @@ -172,15 +172,12 @@ ;; FIXME handle #f program-bindings return (define (frame-bindings frame addr) - (do ((bs (program-bindings (frame-program frame)) (cdr bs)) - (ls '() (if (cdar bs) (cons (cdar bs) ls) (cdr ls)))) - ((or (null? bs) (> (caar bs) addr)) - (apply append ls)))) + (filter (lambda (b) (and (>= addr (binding:start b)) + (<= addr (binding:end b)))) + (program-bindings (frame-program frame)))) (define (frame-lookup-binding frame addr sym) - (do ((bs (frame-bindings frame addr) (cdr bs))) - ((or (null? bs) (eq? sym (binding:name (car bs)))) - (and (pair? bs) (car bs))))) + (assq sym (reverse (frame-bindings frame addr)))) (define (frame-object-binding frame addr obj) (do ((bs (frame-bindings frame addr) (cdr bs)))