diff options
author | Mark H Weaver <mhw@netris.org> | 2014-01-09 01:32:32 -0500 |
---|---|---|
committer | Mark H Weaver <mhw@netris.org> | 2014-01-09 02:52:34 -0500 |
commit | 1df515a077f26d59510e48fad3d45a33d2c90e0f (patch) | |
tree | 05991bb4b3d527390d036fbb17617d6905097bda /module/system/vm/traps.scm | |
parent | 61989c705359c50c61d7f52392f244d386218298 (diff) | |
parent | 306cc01d3981feaa11aa0d866ff1d99128f0ace3 (diff) | |
download | guile-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.scm | 23 |
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. ;; |