1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-06-14 23:50:19 +02:00

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.
This commit is contained in:
Ludovic Courtès 2010-09-24 15:19:49 +02:00
parent ede3d96bd6
commit 639b2eb710
2 changed files with 26 additions and 4 deletions

View file

@ -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