From 6838ac39df50058cdd83c4e21565c16a60838c40 Mon Sep 17 00:00:00 2001 From: Vincent St-Amour Date: Mon, 26 Nov 2012 14:45:20 -0500 Subject: [PATCH] Report struct constructors used in hot code. original commit: 9c7356370577067fffd66d3770cf4a5f3da8a53f --- collects/typed-racket/optimizer/hidden-costs.rkt | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/collects/typed-racket/optimizer/hidden-costs.rkt b/collects/typed-racket/optimizer/hidden-costs.rkt index 70110acb..9f2e6d47 100644 --- a/collects/typed-racket/optimizer/hidden-costs.rkt +++ b/collects/typed-racket/optimizer/hidden-costs.rkt @@ -6,6 +6,8 @@ (optimizer utils logging) (types abbrev)) +(require (types type-table)) + (provide hidden-cost-log-expr) (define-syntax-class hidden-port-parameter-function @@ -29,4 +31,11 @@ (syntax->list #'(args ...))) #:with opt (begin (log-optimization-info "hidden parameter" #'op) + #`(op #,@(syntax-map (optimize) #'(args ...))))) + ;; Log calls to struct constructors, so that OC can report those used in + ;; hot loops. + (pattern (#%plain-app op:id args ...) + #:when (struct-constructor? #'op) + #:with opt + (begin (log-optimization-info "struct constructor" #'op) #`(op #,@(syntax-map (optimize) #'(args ...))))))