From 27f3eb3870cbed6768f0262c267923a16f192953 Mon Sep 17 00:00:00 2001 From: Vincent St-Amour Date: Wed, 22 Jun 2011 19:12:03 -0400 Subject: [PATCH] Report optimizations and missed optimizations with the DrRacket tool. Currently, that just means showing the text that would be shown on the command line. Eventually, it should highlight code in the editor, and have tooltips explaining what happened. --- collects/typed-scheme/optimizer/tool/tool.rkt | 26 ++++++++++++++++--- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/collects/typed-scheme/optimizer/tool/tool.rkt b/collects/typed-scheme/optimizer/tool/tool.rkt index 9d01efad8f..b20fb99b10 100644 --- a/collects/typed-scheme/optimizer/tool/tool.rkt +++ b/collects/typed-scheme/optimizer/tool/tool.rkt @@ -1,8 +1,11 @@ #lang racket/base -(require racket/unit racket/class +(require racket/unit racket/class racket/port racket/gui/base mrlib/switchable-button) +(require (prefix-in tr: typed-scheme/typed-reader) + typed-scheme/optimizer/logging) + (provide performance-report-drracket-button) ;; DrRacket tool for reporting missed optimizations in the editor. @@ -20,10 +23,25 @@ (send bdc set-bitmap #f) bmp)) +;; performance-report-callback : drracket:unit:frame<%> -> void +(define (performance-report-callback drr-frame) + (define defs (send drr-frame get-definitions-text)) ; : text% + (define portname (send defs get-filename)) + (message-box + "Performance Report" + (with-output-to-string + (lambda () + (with-tr-logging-to-port + (current-output-port) + (lambda () + (parameterize ([current-namespace (make-base-namespace)] + [read-accept-reader #t]) + (expand + (tr:read-syntax portname + (open-input-string (send defs get-text))))))))))) + (define performance-report-drracket-button (list "Performance Report" reverse-content-bitmap - (λ (drs-frame) - (message-box "Performance Report" - "Coming Soon!")))) + performance-report-callback))