HCoop
/
bpt
/
guile.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
temporarily disable elisp exception tests
[bpt/guile.git]
/
module
/
statprof.scm
diff --git
a/module/statprof.scm
b/module/statprof.scm
index
961f769
..
e613aad
100644
(file)
--- a/
module/statprof.scm
+++ b/
module/statprof.scm
@@
-1,7
+1,7
@@
;;;; (statprof) -- a statistical profiler for Guile
;;;; -*-scheme-*-
;;;;
;;;; (statprof) -- a statistical profiler for Guile
;;;; -*-scheme-*-
;;;;
-;;;; Copyright (C) 2009, 2010, 2011, 2013
, 2014
Free Software Foundation, Inc.
+;;;; Copyright (C) 2009, 2010, 2011, 2013
-2015
Free Software Foundation, Inc.
;;;; Copyright (C) 2004, 2009 Andy Wingo <wingo at pobox dot com>
;;;; Copyright (C) 2001 Rob Browning <rlb at defaultvalue dot org>
;;;;
;;;; Copyright (C) 2004, 2009 Andy Wingo <wingo at pobox dot com>
;;;; Copyright (C) 2001 Rob Browning <rlb at defaultvalue dot org>
;;;;
@@
-829,15
+829,16
@@
The return value is a list of nodes, each of which is of the type:
equal?))))
(define (call-thunk thunk)
equal?))))
(define (call-thunk thunk)
- (thunk)
- (values))
+ (call-with-values (lambda () (thunk))
+ (lambda results
+ (apply values results))))
(define* (statprof thunk #:key (loop 1) (hz 100) (count-calls? #f)
(port (current-output-port)) full-stacks?)
(define* (statprof thunk #:key (loop 1) (hz 100) (count-calls? #f)
(port (current-output-port)) full-stacks?)
- "Profile
s the execution of @var{thunk}
.
+ "Profile
the execution of @var{thunk}, and return its return values
.
-The stack will be sampled @var{hz} times per second, and the thunk
itself will
-be called @var{loop} times.
+The stack will be sampled @var{hz} times per second, and the thunk
+
itself will
be called @var{loop} times.
If @var{count-calls?} is true, all procedure calls will be recorded. This
operation is somewhat expensive."
If @var{count-calls?} is true, all procedure calls will be recorded. This
operation is somewhat expensive."
@@
-853,15
+854,16
@@
operation is somewhat expensive."
(statprof-start state))
(lambda ()
(let lp ((i loop))
(statprof-start state))
(lambda ()
(let lp ((i loop))
- (unless (
zero? i
)
+ (unless (
= i 1
)
(call-thunk thunk)
(call-thunk thunk)
- (lp (1- i)))))
+ (lp (1- i))))
+ (call-thunk thunk))
(lambda ()
(statprof-stop state)
(statprof-display port state))))))
(define-macro (with-statprof . args)
(lambda ()
(statprof-stop state)
(statprof-display port state))))))
(define-macro (with-statprof . args)
- "Profile
s the expressions in its body
.
+ "Profile
the expressions in the body, and return the body's return values
.
Keyword arguments:
Keyword arguments: