Implement TR pruning.
This commit is contained in:
parent
9c73563705
commit
6e9ed24eae
|
@ -29,7 +29,7 @@
|
||||||
(define (generate-report this profile)
|
(define (generate-report this profile)
|
||||||
(define-values (TR-log mzc-log) (generate-logs this))
|
(define-values (TR-log mzc-log) (generate-logs this))
|
||||||
(log->report
|
(log->report
|
||||||
(append TR-log
|
(append (prune-cold-TR-failures TR-log profile)
|
||||||
(post-process-inline-log mzc-log profile TR-log))))
|
(post-process-inline-log mzc-log profile TR-log))))
|
||||||
|
|
||||||
|
|
||||||
|
@ -213,3 +213,28 @@
|
||||||
[(prev l) ; no overlap, just add to the list
|
[(prev l) ; no overlap, just add to the list
|
||||||
(values (cons l new-report) l)])))
|
(values (cons l new-report) l)])))
|
||||||
new-report)
|
new-report)
|
||||||
|
|
||||||
|
;;--------------------------------------------------------------------
|
||||||
|
|
||||||
|
(require "profiling.rkt")
|
||||||
|
(define (prune-cold-TR-failures TR-log profile)
|
||||||
|
(define hot-functions (and profile (prune-profile profile)))
|
||||||
|
|
||||||
|
;; #f if no profiling info is available for this function
|
||||||
|
;; takes in either a single pos number or a pair of numbers (line col)
|
||||||
|
(define (pos->node pos)
|
||||||
|
(and profile
|
||||||
|
pos
|
||||||
|
(for/first ([p (in-list (profile-nodes profile))]
|
||||||
|
#:when (let* ([from (node-pos p)]
|
||||||
|
[span (node-span p)])
|
||||||
|
(and from span
|
||||||
|
(<= from pos (+ from span)))))
|
||||||
|
p)))
|
||||||
|
|
||||||
|
(define (in-hot-function? l)
|
||||||
|
(or (not profile) ; keep everything if we don't have profile info
|
||||||
|
(opt-log-entry? l) ; don't prune successes
|
||||||
|
(memq (pos->node (log-entry-pos l)) hot-functions)))
|
||||||
|
|
||||||
|
(filter in-hot-function? TR-log))
|
||||||
|
|
Loading…
Reference in New Issue
Block a user