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 ...))))))