summaryrefslogtreecommitdiff
path: root/module/system/vm/traps.scm
diff options
context:
space:
mode:
authorMark H Weaver <mhw@netris.org>2014-01-09 01:32:32 -0500
committerMark H Weaver <mhw@netris.org>2014-01-09 02:52:34 -0500
commit1df515a077f26d59510e48fad3d45a33d2c90e0f (patch)
tree05991bb4b3d527390d036fbb17617d6905097bda /module/system/vm/traps.scm
parent61989c705359c50c61d7f52392f244d386218298 (diff)
parent306cc01d3981feaa11aa0d866ff1d99128f0ace3 (diff)
downloadguile-1df515a077f26d59510e48fad3d45a33d2c90e0f.tar.gz
Merge branch 'stable-2.0'
Conflicts: module/system/vm/traps.scm test-suite/tests/peval.test
Diffstat (limited to 'module/system/vm/traps.scm')
-rw-r--r--module/system/vm/traps.scm23
1 files changed, 13 insertions, 10 deletions
diff --git a/module/system/vm/traps.scm b/module/system/vm/traps.scm
index aa13b6ab8..114647e9e 100644
--- a/module/system/vm/traps.scm
+++ b/module/system/vm/traps.scm
@@ -113,16 +113,19 @@
(and pdi (program-debug-info-size pdi))))
(define (frame-matcher proc match-code?)
- (if match-code?
- (if (program? proc)
- (let ((start (program-code proc))
- (end (program-last-ip proc)))
- (lambda (frame)
- (let ((ip (frame-instruction-pointer frame)))
- (and (<= start ip) (< ip end)))))
- (lambda (frame) #f))
- (lambda (frame)
- (eq? (frame-procedure frame) proc))))
+ (let ((proc (if (struct? proc)
+ (procedure proc)
+ proc)))
+ (if match-code?
+ (if (program? proc)
+ (let ((start (program-code proc))
+ (end (program-last-ip proc)))
+ (lambda (frame)
+ (let ((ip (frame-instruction-pointer frame)))
+ (and (<= start ip) (< ip end)))))
+ (lambda (frame) #f))
+ (lambda (frame)
+ (eq? (frame-procedure frame) proc)))))
;; A basic trap, fires when a procedure is called.
;;