1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-04-30 11:50:28 +02:00

statprof: call-data is a record type

* module/statprof.scm (call-data): Reimplement as a record type.
This commit is contained in:
Andy Wingo 2014-02-22 14:59:21 +01:00
parent cad444e31a
commit e70a42d4c9

View file

@ -210,25 +210,25 @@
(or (profiler-state) (or (profiler-state)
(error "expected there to be a profiler state"))) (error "expected there to be a profiler state")))
;; If you change the call-data data structure, you need to also change (define-record-type call-data
;; sample-uncount-frame. (make-call-data proc call-count cum-sample-count self-sample-count)
(define (make-call-data proc call-count cum-sample-count self-sample-count) call-data?
(vector proc call-count cum-sample-count self-sample-count)) (proc call-data-proc)
(define (call-data-proc cd) (vector-ref cd 0)) (call-count call-data-call-count set-call-data-call-count!)
(cum-sample-count call-data-cum-sample-count set-call-data-cum-sample-count!)
(self-sample-count call-data-self-sample-count set-call-data-self-sample-count!))
(define (call-data-name cd) (procedure-name (call-data-proc cd))) (define (call-data-name cd) (procedure-name (call-data-proc cd)))
(define (call-data-printable cd) (define (call-data-printable cd)
(or (call-data-name cd) (or (call-data-name cd)
(with-output-to-string (lambda () (write (call-data-proc cd)))))) (with-output-to-string (lambda () (write (call-data-proc cd))))))
(define (call-data-call-count cd) (vector-ref cd 1))
(define (call-data-cum-sample-count cd) (vector-ref cd 2))
(define (call-data-self-sample-count cd) (vector-ref cd 3))
(define (inc-call-data-call-count! cd) (define (inc-call-data-call-count! cd)
(vector-set! cd 1 (1+ (vector-ref cd 1)))) (set-call-data-call-count! cd (1+ (call-data-call-count cd))))
(define (inc-call-data-cum-sample-count! cd) (define (inc-call-data-cum-sample-count! cd)
(vector-set! cd 2 (1+ (vector-ref cd 2)))) (set-call-data-cum-sample-count! cd (1+ (call-data-cum-sample-count cd))))
(define (inc-call-data-self-sample-count! cd) (define (inc-call-data-self-sample-count! cd)
(vector-set! cd 3 (1+ (vector-ref cd 3)))) (set-call-data-self-sample-count! cd (1+ (call-data-self-sample-count cd))))
(define (accumulate-time state stop-time) (define (accumulate-time state stop-time)
(set-accumulated-time! state (set-accumulated-time! state