diff options
Diffstat (limited to 'module/system/vm/frame.scm')
-rw-r--r-- | module/system/vm/frame.scm | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/module/system/vm/frame.scm b/module/system/vm/frame.scm index 57ae877ff..94619badf 100644 --- a/module/system/vm/frame.scm +++ b/module/system/vm/frame.scm @@ -26,7 +26,7 @@ #:export (frame-bindings frame-lookup-binding frame-binding-ref frame-binding-set! - frame-source frame-call-representation + frame-source frame-next-source frame-call-representation frame-environment frame-object-binding frame-object-name frame-return-values)) @@ -71,8 +71,17 @@ ;;; (define (frame-source frame) - (program-source (frame-procedure frame) - (frame-instruction-pointer frame))) + (let ((proc (frame-procedure frame))) + (program-source proc + (frame-instruction-pointer frame) + (program-sources proc)))) + +(define (frame-next-source frame) + (let ((proc (frame-procedure frame))) + (program-source proc + (frame-instruction-pointer frame) + (program-sources-pre-retire proc)))) + ;; Basically there are two cases to deal with here: ;; |