From 5d201843e53460f64c762d58bb36120e67a3643c Mon Sep 17 00:00:00 2001 From: Vincent St-Amour Date: Tue, 17 May 2011 16:43:57 -0400 Subject: [PATCH] close-call -> missed-optimization original commit: b598c4a1ebbe6eae71384355d2b0f55d0bed6fa7 --- collects/tests/typed-scheme/main.rkt | 6 +++--- .../all-real.rkt | 0 .../pair.rkt | 0 .../precision-loss.rkt | 0 .../real-in-float-expr.rkt | 0 .../unexpected-complex.rkt | 0 collects/tests/typed-scheme/optimizer/run.rkt | 16 +++++++-------- collects/tests/typed-scheme/run.rkt | 16 +++++++-------- .../typed-scheme/optimizer/float-complex.rkt | 4 ++-- collects/typed-scheme/optimizer/float.rkt | 20 +++++++++---------- collects/typed-scheme/optimizer/optimizer.rkt | 2 +- collects/typed-scheme/optimizer/pair.rkt | 8 ++++---- collects/typed-scheme/optimizer/utils.rkt | 8 ++++---- 13 files changed, 40 insertions(+), 40 deletions(-) rename collects/tests/typed-scheme/optimizer/{close-calls => missed-optimizations}/all-real.rkt (100%) rename collects/tests/typed-scheme/optimizer/{close-calls => missed-optimizations}/pair.rkt (100%) rename collects/tests/typed-scheme/optimizer/{close-calls => missed-optimizations}/precision-loss.rkt (100%) rename collects/tests/typed-scheme/optimizer/{close-calls => missed-optimizations}/real-in-float-expr.rkt (100%) rename collects/tests/typed-scheme/optimizer/{close-calls => missed-optimizations}/unexpected-complex.rkt (100%) diff --git a/collects/tests/typed-scheme/main.rkt b/collects/tests/typed-scheme/main.rkt index 76124502..5d13d4b4 100644 --- a/collects/tests/typed-scheme/main.rkt +++ b/collects/tests/typed-scheme/main.rkt @@ -121,8 +121,8 @@ (lambda (p thnk) (check-not-exn thnk))] [(equal? dir "optimizer/tests/") (lambda (p* thnk) (test-opt p))] - [(equal? dir "optimizer/close-calls/") - (lambda (p* thnk) (test-close-call p))]))) + [(equal? dir "optimizer/missed-optimizations/") + (lambda (p* thnk) (test-missed-optimization p))]))) (test-suite (path->string p) (f @@ -141,4 +141,4 @@ (provide go go/text just-one int-tests unit-tests compile-benchmarks - optimization-tests close-call-tests) + optimization-tests missed-optimization-tests) diff --git a/collects/tests/typed-scheme/optimizer/close-calls/all-real.rkt b/collects/tests/typed-scheme/optimizer/missed-optimizations/all-real.rkt similarity index 100% rename from collects/tests/typed-scheme/optimizer/close-calls/all-real.rkt rename to collects/tests/typed-scheme/optimizer/missed-optimizations/all-real.rkt diff --git a/collects/tests/typed-scheme/optimizer/close-calls/pair.rkt b/collects/tests/typed-scheme/optimizer/missed-optimizations/pair.rkt similarity index 100% rename from collects/tests/typed-scheme/optimizer/close-calls/pair.rkt rename to collects/tests/typed-scheme/optimizer/missed-optimizations/pair.rkt diff --git a/collects/tests/typed-scheme/optimizer/close-calls/precision-loss.rkt b/collects/tests/typed-scheme/optimizer/missed-optimizations/precision-loss.rkt similarity index 100% rename from collects/tests/typed-scheme/optimizer/close-calls/precision-loss.rkt rename to collects/tests/typed-scheme/optimizer/missed-optimizations/precision-loss.rkt diff --git a/collects/tests/typed-scheme/optimizer/close-calls/real-in-float-expr.rkt b/collects/tests/typed-scheme/optimizer/missed-optimizations/real-in-float-expr.rkt similarity index 100% rename from collects/tests/typed-scheme/optimizer/close-calls/real-in-float-expr.rkt rename to collects/tests/typed-scheme/optimizer/missed-optimizations/real-in-float-expr.rkt diff --git a/collects/tests/typed-scheme/optimizer/close-calls/unexpected-complex.rkt b/collects/tests/typed-scheme/optimizer/missed-optimizations/unexpected-complex.rkt similarity index 100% rename from collects/tests/typed-scheme/optimizer/close-calls/unexpected-complex.rkt rename to collects/tests/typed-scheme/optimizer/missed-optimizations/unexpected-complex.rkt diff --git a/collects/tests/typed-scheme/optimizer/run.rkt b/collects/tests/typed-scheme/optimizer/run.rkt index 18c4dded..833f2aa5 100644 --- a/collects/tests/typed-scheme/optimizer/run.rkt +++ b/collects/tests/typed-scheme/optimizer/run.rkt @@ -2,8 +2,8 @@ (require racket/runtime-path rackunit rackunit/text-ui) -(provide optimization-tests close-call-tests - test-opt test-close-call) +(provide optimization-tests missed-optimization-tests + test-opt test-missed-optimization) (define (generate-log name dir flags) ;; some tests require other tests, so some fiddling is required @@ -38,14 +38,14 @@ (read))))))) -(define-runtime-path tests-dir "./tests") -(define-runtime-path close-calls-dir "./close-calls") +(define-runtime-path tests-dir "./tests") +(define-runtime-path missed-optimizations-dir "./missed-optimizations") ;; these two return lists of tests to be run for that category of tests (define (test-opt name) (list (compare-logs name tests-dir '#("--log-optimizations")))) -(define (test-close-call name) - (list (compare-logs name close-calls-dir '#("--log-close-calls")))) +(define (test-missed-optimization name) + (list (compare-logs name missed-optimizations-dir '#("--log-missed-optimizations")))) ;; proc returns the list of tests to be run on each file (define (mk-suite suite-name dir proc) @@ -61,5 +61,5 @@ (define optimization-tests (mk-suite "Optimization Tests" tests-dir test-opt)) -(define close-call-tests - (mk-suite "Close Call Tests" close-calls-dir test-close-call)) +(define missed-optimization-tests + (mk-suite "Missed Optimization Tests" missed-optimizations-dir test-missed-optimization)) diff --git a/collects/tests/typed-scheme/run.rkt b/collects/tests/typed-scheme/run.rkt index 9e91be23..9db6e815 100644 --- a/collects/tests/typed-scheme/run.rkt +++ b/collects/tests/typed-scheme/run.rkt @@ -8,7 +8,7 @@ (define unit? (make-parameter #f)) (define int? (make-parameter #f)) (define opt? (make-parameter #f)) -(define close-calls? (make-parameter #f)) +(define missed-opt? (make-parameter #f)) (define bench? (make-parameter #f)) (define single (make-parameter #f)) (current-namespace (make-base-namespace)) @@ -17,11 +17,11 @@ ["--unit" "run the unit tests" (unit? #t)] ["--int" "run the integration tests" (int? #t)] ["--opt" "run the optimization tests" (opt? #t)] - ["--close-calls" "run the close call tests" (close-calls? #t)] + ["--missed-opt" "run the missed optimization tests" (missed-opt? #t)] ["--benchmarks" "compile the typed benchmarks" (bench? #t)] ["--just" path "run only this test" (single (just-one path))] ["--nightly" "for the nightly builds" (begin (nightly? #t) (unit? #t) (opt? #t))] - ["--all" "run all tests" (begin (unit? #t) (int? #t) (opt? #t) (close-calls? #t) (bench? #t))] + ["--all" "run all tests" (begin (unit? #t) (int? #t) (opt? #t) (missed-opt? #t) (bench? #t))] ["--gui" "run using the gui" (if (gui-available?) (begin (exec go)) @@ -33,10 +33,10 @@ [else (make-test-suite "Typed Racket Tests" - (append (if (unit?) (list unit-tests) '()) - (if (int?) (list int-tests) '()) - (if (opt?) (list optimization-tests) '()) - (if (close-calls?) (list close-call-tests) '()) - (if (bench?) (list (compile-benchmarks)) '())))])]) + (append (if (unit?) (list unit-tests) '()) + (if (int?) (list int-tests) '()) + (if (opt?) (list optimization-tests) '()) + (if (missed-opt?) (list missed-optimization-tests) '()) + (if (bench?) (list (compile-benchmarks)) '())))])]) (unless (= 0 ((exec) to-run)) (eprintf "Typed Racket Tests did not pass.\n")))) diff --git a/collects/typed-scheme/optimizer/float-complex.rkt b/collects/typed-scheme/optimizer/float-complex.rkt index 614d036f..2225bb6b 100644 --- a/collects/typed-scheme/optimizer/float-complex.rkt +++ b/collects/typed-scheme/optimizer/float-complex.rkt @@ -378,8 +378,8 @@ #:when (when (and (in-complex-layer? #'e) (for/and ([subexpr (in-list (syntax->list #'(e.args ...)))]) (subtypeof? subexpr -Real))) - (log-close-call "unexpected complex value" - this-syntax #'e.op)) + (log-missed-optimization "unexpected complex value" + this-syntax #'e.op)) ;; We don't actually want to match. #:when #f #:with real-binding #'#f ; required, otherwise syntax/parse is not happy diff --git a/collects/typed-scheme/optimizer/float.rkt b/collects/typed-scheme/optimizer/float.rkt index 9e2bcee8..429e0247 100644 --- a/collects/typed-scheme/optimizer/float.rkt +++ b/collects/typed-scheme/optimizer/float.rkt @@ -91,14 +91,14 @@ ;; opportunity, report it ;; ignore operations that stay within integers or rationals, since ;; these have nothing to do with float optimizations - [close-call? (and (not safe-to-opt?) - (in-real-layer? this-syntax))]) - (when close-call? - (log-close-call "binary, args all float-arg-expr, return type not Float" - this-syntax - (for/first ([x (in-list (syntax->list #'(f1 f2 fs ...)))] - #:when (not (subtypeof? x -Flonum))) - x))) + [missed-optimization? (and (not safe-to-opt?) + (in-real-layer? this-syntax))]) + (when missed-optimization? + (log-missed-optimization "binary, args all float-arg-expr, return type not Float" + this-syntax + (for/first ([x (in-list (syntax->list #'(f1 f2 fs ...)))] + #:when (not (subtypeof? x -Flonum))) + x))) ;; If an optimization was expected (whether it was safe or not doesn't matter), ;; report subexpressions doing expensive exact arithmetic (Exact-Rational and ;; Real arithmetic), since that extra precision would be "lost" by going to @@ -107,7 +107,7 @@ ;; but it's more likely to be there by accident. I can't really think of many ;; use cases for computing exact intermediate results, then converting them to ;; floats at the end. - (when (or safe-to-opt? close-call?) + (when (or safe-to-opt? missed-optimization?) (for ([subexpr (in-list (syntax->list #'(f1 f2 fs ...)))] #:when (or (in-real-layer? subexpr) (in-rational-layer? subexpr))) @@ -118,7 +118,7 @@ ;; (vector-ref vector-of-rationals x) ;; which don't perform arithmetic despite returning numbers. [e:arith-expr - (log-close-call + (log-missed-optimization "exact arithmetic subexpression inside a float expression, extra precision discarded" subexpr this-syntax)] [_ #f]))) diff --git a/collects/typed-scheme/optimizer/optimizer.rkt b/collects/typed-scheme/optimizer/optimizer.rkt index 0b74e9e4..ffff9e4a 100644 --- a/collects/typed-scheme/optimizer/optimizer.rkt +++ b/collects/typed-scheme/optimizer/optimizer.rkt @@ -81,7 +81,7 @@ #:with opt #'other)) (define (optimize-top stx) - (let* ([log-file? (and (or *log-optimizations?* *log-close-calls?*) + (let* ([log-file? (and (or *log-optimizations?* *log-missed-optimizations?*) *log-to-log-file?*)] [port (if log-file? (open-output-file *log-file* #:exists 'append) diff --git a/collects/typed-scheme/optimizer/pair.rkt b/collects/typed-scheme/optimizer/pair.rkt index 13de3d07..d4f68170 100644 --- a/collects/typed-scheme/optimizer/pair.rkt +++ b/collects/typed-scheme/optimizer/pair.rkt @@ -45,8 +45,8 @@ ;; it has to be a list, otherwise, there would have been ;; a type error (begin - (log-close-call "car/cdr on a potentially empty list" - this-syntax #'p) + (log-missed-optimization "car/cdr on a potentially empty list" + this-syntax #'p) #f)) #:with opt (begin (log-optimization "pair" #'op) @@ -54,8 +54,8 @@ (pattern (#%plain-app op:mpair-op p:expr e:expr ...) #:when (or (has-mpair-type? #'p) (begin - (log-close-call "mpair op on a potentially empty mlist" - this-syntax #'p) + (log-missed-optimization "mpair op on a potentially empty mlist" + this-syntax #'p) #f)) #:with opt (begin (log-optimization "mutable pair" #'op) diff --git a/collects/typed-scheme/optimizer/utils.rkt b/collects/typed-scheme/optimizer/utils.rkt index 0288e130..0996bd0b 100644 --- a/collects/typed-scheme/optimizer/utils.rkt +++ b/collects/typed-scheme/optimizer/utils.rkt @@ -8,7 +8,7 @@ (rep type-rep)) (provide *log-file* *log-to-log-file?* log-optimization *log-optimizations?* - log-close-call *log-close-calls?* + log-missed-optimization *log-missed-optimizations?* *show-optimized-code* subtypeof? isoftype? mk-unsafe-tbl @@ -45,9 +45,9 @@ ;; of reporting them to the user. ;; This is meant to help users understand what hurts the performance of ;; their programs. -(define *log-close-calls?* (in-command-line? "--log-close-calls")) -(define (log-close-call kind stx [irritant #f]) - (when *log-close-calls?* +(define *log-missed-optimizations?* (in-command-line? "--log-missed-optimizations")) +(define (log-missed-optimization kind stx [irritant #f]) + (when *log-missed-optimizations?* (do-logging (if irritant (format "~a -- caused by: ~a ~a" kind