summaryrefslogtreecommitdiff
path: root/module/system/vm/coverage.scm
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2010-09-24 15:19:49 +0200
committerLudovic Courtès <ludo@gnu.org>2010-09-24 15:39:47 +0200
commit639b2eb7107b26207d13bb8acb4c1d38d7dba3bd (patch)
tree137aee74fd4743902b190fbb3be41c4d40a1663e /module/system/vm/coverage.scm
parentede3d96bd675246bbe138bacb2fdbbdf2523d247 (diff)
downloadguile-639b2eb7107b26207d13bb8acb4c1d38d7dba3bd.tar.gz
Fix coverage analysis of procedures called from C.
* module/system/vm/coverage.scm (with-code-coverage): Switch current thread to VM, using `set-thread-vm!'. * test-suite/tests/coverage.test ("procedure-execution-count")["called from C"]: New test.
Diffstat (limited to 'module/system/vm/coverage.scm')
-rw-r--r--module/system/vm/coverage.scm9
1 files changed, 6 insertions, 3 deletions
diff --git a/module/system/vm/coverage.scm b/module/system/vm/coverage.scm
index 260097491..0f4c73ec9 100644
--- a/module/system/vm/coverage.scm
+++ b/module/system/vm/coverage.scm
@@ -85,15 +85,18 @@ coverage data. Return code coverage data and the values returned by THUNK."
(loop))))))
(call-with-values (lambda ()
- (let ((level (vm-trace-level vm))
- (hook (vm-next-hook vm)))
+ (let ((level (vm-trace-level vm))
+ (hook (vm-next-hook vm))
+ (prev-vm (thread-vm (current-thread))))
(dynamic-wind
(lambda ()
(set-vm-trace-level! vm (+ level 1))
- (add-hook! hook collect!))
+ (add-hook! hook collect!)
+ (set-thread-vm! (current-thread) vm))
(lambda ()
(vm-apply vm thunk '()))
(lambda ()
+ (set-thread-vm! (current-thread) prev-vm)
(set-vm-trace-level! vm level)
(remove-hook! hook collect!)))))
(lambda args