Add delays to unboxed let to avoid optimizing twice.

This commit is contained in:
Eric Dobson 2014-02-05 21:51:18 -08:00
parent f1b52be26a
commit c1bfc9601e
10 changed files with 7 additions and 77 deletions

View File

@ -97,16 +97,17 @@
[(vs rhs:opt-expr)
#'((vs rhs.opt))]))))
(define-syntax-class unboxed-clauses
#:attributes ([bindings 1])
#:attributes (bindings)
(pattern (clauses:unboxed-clause ...)
#:with (bindings ...) (template ((?@ . clauses.bindings) ...))))]
#:attr bindings (delay (template ((?@ . clauses.bindings) ...)))))]
#:with opt
#:attr opt
(syntax-parse #'(clause ...)
[clauses:unboxed-clauses
(delay
(quasisyntax/loc/origin
this-syntax #'letk.kw
(letk.key ... (clauses.bindings ...) body.opt ...))])))
(letk.key ... clauses.bindings body.opt ...)))])))

View File

@ -5,7 +5,6 @@ TR info: mandelbrot.rkt 10:18 (* 2.0 y) -- possible exact real arith
TR info: mandelbrot.rkt 11:15 (/ (* 2.0 x) n) -- possible exact real arith
TR info: mandelbrot.rkt 11:18 (* 2.0 x) -- possible exact real arith
TR info: mandelbrot.rkt 21:28 (* 2 zr zi) -- possible exact real arith
TR info: mandelbrot.rkt 21:28 (* 2 zr zi) -- possible exact real arith
TR missed opt: mandelbrot.rkt 10:12 (- (/ (* 2.0 y) n) 1.0) -- all args float-arg-expr, result not Float -- caused by: 10:15 (/ (* 2.0 y) n)
TR missed opt: mandelbrot.rkt 10:12 (- (/ (* 2.0 y) n) 1.0) -- exact ops inside float expr -- caused by: 10:15 (/ (* 2.0 y) n)
TR missed opt: mandelbrot.rkt 10:15 (/ (* 2.0 y) n) -- all args float-arg-expr, result not Float -- caused by: 10:18 (* 2.0 y), 10:28 n
@ -15,20 +14,12 @@ TR missed opt: mandelbrot.rkt 11:12 (- (/ (* 2.0 x) n) 1.5) -- exact ops inside
TR missed opt: mandelbrot.rkt 11:15 (/ (* 2.0 x) n) -- all args float-arg-expr, result not Float -- caused by: 11:18 (* 2.0 x), 11:28 n
TR missed opt: mandelbrot.rkt 11:18 (* 2.0 x) -- all args float-arg-expr, result not Float -- caused by: 11:25 x
TR missed opt: mandelbrot.rkt 18:14 (> (+ zrq ziq) 4) -- generic comparison -- caused by: 18:29 4
TR missed opt: mandelbrot.rkt 18:14 (> (+ zrq ziq) 4) -- generic comparison -- caused by: 18:29 4
TR missed opt: mandelbrot.rkt 21:25 (- (* 2 zr zi) ci) -- all args float-arg-expr, result not Float -- caused by: 21:28 (* 2 zr zi)
TR missed opt: mandelbrot.rkt 21:25 (- (* 2 zr zi) ci) -- all args float-arg-expr, result not Float -- caused by: 21:28 (* 2 zr zi)
TR missed opt: mandelbrot.rkt 21:28 (* 2 zr zi) -- all args float-arg-expr, result not Float -- caused by: 21:31 2
TR missed opt: mandelbrot.rkt 21:28 (* 2 zr zi) -- all args float-arg-expr, result not Float -- caused by: 21:31 2
TR opt: mandelbrot.rkt 15:21 (* zr zr) -- binary float
TR opt: mandelbrot.rkt 15:21 (* zr zr) -- binary float
TR opt: mandelbrot.rkt 16:21 (* zi zi) -- binary float
TR opt: mandelbrot.rkt 16:21 (* zi zi) -- binary float
TR opt: mandelbrot.rkt 18:17 (+ zrq ziq) -- binary float
TR opt: mandelbrot.rkt 18:17 (+ zrq ziq) -- binary float
TR opt: mandelbrot.rkt 20:25 (+ (- zrq ziq) cr) -- binary float
TR opt: mandelbrot.rkt 20:25 (+ (- zrq ziq) cr) -- binary float
TR opt: mandelbrot.rkt 20:28 (- zrq ziq) -- binary float
TR opt: mandelbrot.rkt 20:28 (- zrq ziq) -- binary float
END
""

View File

@ -7,7 +7,6 @@ TR info: marketplace-struct.rkt 96:3 vm -- struct constructor
TR missed opt: marketplace-struct.rkt 118:34 (in-hash-keys (vm-processes state)) -- non-specialized for clause
TR missed opt: marketplace-struct.rkt 127:32 (in-hash-keys (vm-processes state)) -- non-specialized for clause
TR missed opt: marketplace-struct.rkt 132:46 (in-hash-keys (process-endpoints p)) -- non-specialized for clause
TR missed opt: marketplace-struct.rkt 132:46 (in-hash-keys (process-endpoints p)) -- non-specialized for clause
TR opt: marketplace-struct.rkt 103:2 (struct-copy vm state (processes (hash-set (vm-processes state) (Process-pid wp) wp))) -- dead else branch
TR opt: marketplace-struct.rkt 103:2 (struct-copy vm state (processes (hash-set (vm-processes state) (Process-pid wp) wp))) -- struct ref
TR opt: marketplace-struct.rkt 103:45 (vm-processes state) -- struct ref
@ -18,10 +17,6 @@ TR opt: marketplace-struct.rkt 112:60 (vm-processes state) -- struct ref
TR opt: marketplace-struct.rkt 118:48 (vm-processes state) -- struct ref
TR opt: marketplace-struct.rkt 127:46 (vm-processes state) -- struct ref
TR opt: marketplace-struct.rkt 132:60 (process-endpoints p) -- struct ref
TR opt: marketplace-struct.rkt 132:60 (process-endpoints p) -- struct ref
TR opt: marketplace-struct.rkt 133:35 (process-endpoints p) -- struct ref
TR opt: marketplace-struct.rkt 133:35 (process-endpoints p) -- struct ref
TR opt: marketplace-struct.rkt 133:35 (process-endpoints p) -- struct ref
TR opt: marketplace-struct.rkt 133:35 (process-endpoints p) -- struct ref
END
""

View File

@ -3,7 +3,6 @@
TR info: dead-inf-comp.rkt 102:4 (>= -inf.f rat) -- possible exact real arith
TR info: dead-inf-comp.rkt 105:4 (>= rat -inf.f) -- possible exact real arith
TR info: dead-inf-comp.rkt 110:41 displayln -- hidden parameter
TR info: dead-inf-comp.rkt 110:41 displayln -- hidden parameter
TR info: dead-inf-comp.rkt 57:4 (< rat +inf.f) -- possible exact real arith
TR info: dead-inf-comp.rkt 60:4 (< +inf.f rat) -- possible exact real arith
TR info: dead-inf-comp.rkt 63:4 (< rat -inf.f) -- possible exact real arith
@ -20,7 +19,6 @@ TR info: dead-inf-comp.rkt 96:4 (>= +inf.f rat) -- possible exact real arith
TR info: dead-inf-comp.rkt 99:4 (>= rat +inf.f) -- possible exact real arith
TR missed opt: dead-inf-comp.rkt 10:4 (< rat -inf.0) -- generic comparison -- caused by: 10:7 rat
TR missed opt: dead-inf-comp.rkt 110:0 (for: ((i (in-range 5 +inf.0 2)) (j 3)) (displayln i)) -- generic comparison -- caused by: 110:0 (for: ((i (in-range 5 +inf.0 2)) (j 3)) (displayln i))
TR missed opt: dead-inf-comp.rkt 110:0 (for: ((i (in-range 5 +inf.0 2)) (j 3)) (displayln i)) -- generic comparison -- caused by: 110:0 (for: ((i (in-range 5 +inf.0 2)) (j 3)) (displayln i))
TR missed opt: dead-inf-comp.rkt 13:4 (< -inf.0 rat) -- generic comparison -- caused by: 13:14 rat
TR missed opt: dead-inf-comp.rkt 17:4 (> +inf.0 rat) -- generic comparison -- caused by: 17:14 rat
TR missed opt: dead-inf-comp.rkt 20:4 (> rat +inf.0) -- generic comparison -- caused by: 20:7 rat
@ -45,9 +43,6 @@ TR opt: dead-inf-comp.rkt 110:0 (for: ((i (in-range 5 +inf.0 2)) (j 3)) (display
TR opt: dead-inf-comp.rkt 110:0 (for: ((i (in-range 5 +inf.0 2)) (j 3)) (displayln i)) -- dead else branch
TR opt: dead-inf-comp.rkt 110:0 (for: ((i (in-range 5 +inf.0 2)) (j 3)) (displayln i)) -- dead else branch
TR opt: dead-inf-comp.rkt 110:0 (for: ((i (in-range 5 +inf.0 2)) (j 3)) (displayln i)) -- dead else branch
TR opt: dead-inf-comp.rkt 110:0 (for: ((i (in-range 5 +inf.0 2)) (j 3)) (displayln i)) -- dead else branch
TR opt: dead-inf-comp.rkt 110:0 (for: ((i (in-range 5 +inf.0 2)) (j 3)) (displayln i)) -- dead else branch
TR opt: dead-inf-comp.rkt 110:0 (for: ((i (in-range 5 +inf.0 2)) (j 3)) (displayln i)) -- dead else branch
TR opt: dead-inf-comp.rkt 110:36 3 -- in-range
TR opt: dead-inf-comp.rkt 11:4 (quote dead) -- dead then branch
TR opt: dead-inf-comp.rkt 15:4 (quote dead) -- dead else branch

View File

@ -1,7 +1,6 @@
#;#;
#<<END
TR info: in-bytes.rkt 2:7 display -- hidden parameter
TR info: in-bytes.rkt 2:7 display -- hidden parameter
TR opt: in-bytes.rkt 1:20 #"123" -- in-bytes
END
"495051"

View File

@ -1,7 +1,6 @@
#;#;
#<<END
TR info: in-list.rkt 2:7 display -- hidden parameter
TR info: in-list.rkt 2:7 display -- hidden parameter
TR opt: in-list.rkt 1:20 (quote (1 2 3)) -- in-list
END
"123"

View File

@ -1,7 +1,6 @@
#;#;
#<<END
TR info: in-range.rkt 2:3 display -- hidden parameter
TR info: in-range.rkt 2:3 display -- hidden parameter
TR opt: in-range.rkt 1:9 4 -- in-range
END
"0123"

View File

@ -1,7 +1,6 @@
#;#;
#<<END
TR info: in-string.rkt 2:7 display -- hidden parameter
TR info: in-string.rkt 2:7 display -- hidden parameter
TR opt: in-string.rkt 1:17 "123" -- in-string
END
"123"

View File

@ -1,7 +1,6 @@
#;#;
#<<END
TR info: in-vector.rkt 2:7 display -- hidden parameter
TR info: in-vector.rkt 2:7 display -- hidden parameter
TR opt: in-vector.rkt 1:20 (vector 1 2 3) -- in-vector
END
"123"

View File

@ -1,71 +1,24 @@
#;#;
#<<END
TR opt: vector-sum.rkt 10:2 (for: ((i : Nonnegative-Fixnum (in-range l))) (vector-set! v i (sin (exact->inexact i)))) -- binary fixnum comp
TR opt: vector-sum.rkt 10:2 (for: ((i : Nonnegative-Fixnum (in-range l))) (vector-set! v i (sin (exact->inexact i)))) -- binary fixnum comp
TR opt: vector-sum.rkt 10:2 (for: ((i : Nonnegative-Fixnum (in-range l))) (vector-set! v i (sin (exact->inexact i)))) -- binary fixnum comp
TR opt: vector-sum.rkt 10:2 (for: ((i : Nonnegative-Fixnum (in-range l))) (vector-set! v i (sin (exact->inexact i)))) -- binary fixnum comp
TR opt: vector-sum.rkt 10:2 (for: ((i : Nonnegative-Fixnum (in-range l))) (vector-set! v i (sin (exact->inexact i)))) -- dead else branch
TR opt: vector-sum.rkt 10:2 (for: ((i : Nonnegative-Fixnum (in-range l))) (vector-set! v i (sin (exact->inexact i)))) -- dead else branch
TR opt: vector-sum.rkt 10:2 (for: ((i : Nonnegative-Fixnum (in-range l))) (vector-set! v i (sin (exact->inexact i)))) -- dead else branch
TR opt: vector-sum.rkt 10:2 (for: ((i : Nonnegative-Fixnum (in-range l))) (vector-set! v i (sin (exact->inexact i)))) -- dead else branch
TR opt: vector-sum.rkt 10:2 (for: ((i : Nonnegative-Fixnum (in-range l))) (vector-set! v i (sin (exact->inexact i)))) -- dead else branch
TR opt: vector-sum.rkt 10:2 (for: ((i : Nonnegative-Fixnum (in-range l))) (vector-set! v i (sin (exact->inexact i)))) -- dead else branch
TR opt: vector-sum.rkt 10:2 (for: ((i : Nonnegative-Fixnum (in-range l))) (vector-set! v i (sin (exact->inexact i)))) -- dead else branch
TR opt: vector-sum.rkt 10:2 (for: ((i : Nonnegative-Fixnum (in-range l))) (vector-set! v i (sin (exact->inexact i)))) -- dead else branch
TR opt: vector-sum.rkt 10:2 (for: ((i : Nonnegative-Fixnum (in-range l))) (vector-set! v i (sin (exact->inexact i)))) -- dead else branch
TR opt: vector-sum.rkt 10:2 (for: ((i : Nonnegative-Fixnum (in-range l))) (vector-set! v i (sin (exact->inexact i)))) -- dead else branch
TR opt: vector-sum.rkt 10:2 (for: ((i : Nonnegative-Fixnum (in-range l))) (vector-set! v i (sin (exact->inexact i)))) -- dead else branch
TR opt: vector-sum.rkt 10:2 (for: ((i : Nonnegative-Fixnum (in-range l))) (vector-set! v i (sin (exact->inexact i)))) -- dead else branch
TR opt: vector-sum.rkt 10:2 (for: ((i : Nonnegative-Fixnum (in-range l))) (vector-set! v i (sin (exact->inexact i)))) -- dead else branch
TR opt: vector-sum.rkt 10:2 (for: ((i : Nonnegative-Fixnum (in-range l))) (vector-set! v i (sin (exact->inexact i)))) -- dead else branch
TR opt: vector-sum.rkt 10:2 (for: ((i : Nonnegative-Fixnum (in-range l))) (vector-set! v i (sin (exact->inexact i)))) -- fixnum bounded expr
TR opt: vector-sum.rkt 10:2 (for: ((i : Nonnegative-Fixnum (in-range l))) (vector-set! v i (sin (exact->inexact i)))) -- fixnum bounded expr
TR opt: vector-sum.rkt 10:2 (for: ((i : Nonnegative-Fixnum (in-range l))) (vector-set! v i (sin (exact->inexact i)))) -- fixnum bounded expr
TR opt: vector-sum.rkt 10:2 (for: ((i : Nonnegative-Fixnum (in-range l))) (vector-set! v i (sin (exact->inexact i)))) -- fixnum bounded expr
TR opt: vector-sum.rkt 11:21 (sin (exact->inexact i)) -- unary float
TR opt: vector-sum.rkt 11:21 (sin (exact->inexact i)) -- unary float
TR opt: vector-sum.rkt 11:21 (sin (exact->inexact i)) -- unary float
TR opt: vector-sum.rkt 11:21 (sin (exact->inexact i)) -- unary float
TR opt: vector-sum.rkt 11:26 (exact->inexact i) -- fixnum to float
TR opt: vector-sum.rkt 11:26 (exact->inexact i) -- fixnum to float
TR opt: vector-sum.rkt 11:26 (exact->inexact i) -- fixnum to float
TR opt: vector-sum.rkt 11:26 (exact->inexact i) -- fixnum to float
TR opt: vector-sum.rkt 11:4 (vector-set! v i (sin (exact->inexact i))) -- vector partial bounds checking elimination
TR opt: vector-sum.rkt 11:4 (vector-set! v i (sin (exact->inexact i))) -- vector partial bounds checking elimination
TR opt: vector-sum.rkt 11:4 (vector-set! v i (sin (exact->inexact i))) -- vector partial bounds checking elimination
TR opt: vector-sum.rkt 11:4 (vector-set! v i (sin (exact->inexact i))) -- vector partial bounds checking elimination
TR opt: vector-sum.rkt 12:15 sum -- dead else branch
TR opt: vector-sum.rkt 12:15 sum -- dead else branch
TR opt: vector-sum.rkt 12:15 sum -- dead else branch
TR opt: vector-sum.rkt 12:15 sum -- dead else branch
TR opt: vector-sum.rkt 12:15 sum -- dead else branch
TR opt: vector-sum.rkt 12:15 sum -- dead else branch
TR opt: vector-sum.rkt 12:15 sum -- dead else branch
TR opt: vector-sum.rkt 12:15 sum -- dead else branch
TR opt: vector-sum.rkt 12:2 (for/fold: ((sum : Float 0.0)) ((i : Nonnegative-Fixnum (in-range l))) (+ sum (vector-ref v i))) -- binary fixnum comp
TR opt: vector-sum.rkt 12:2 (for/fold: ((sum : Float 0.0)) ((i : Nonnegative-Fixnum (in-range l))) (+ sum (vector-ref v i))) -- binary fixnum comp
TR opt: vector-sum.rkt 12:2 (for/fold: ((sum : Float 0.0)) ((i : Nonnegative-Fixnum (in-range l))) (+ sum (vector-ref v i))) -- binary fixnum comp
TR opt: vector-sum.rkt 12:2 (for/fold: ((sum : Float 0.0)) ((i : Nonnegative-Fixnum (in-range l))) (+ sum (vector-ref v i))) -- binary fixnum comp
TR opt: vector-sum.rkt 12:2 (for/fold: ((sum : Float 0.0)) ((i : Nonnegative-Fixnum (in-range l))) (+ sum (vector-ref v i))) -- dead else branch
TR opt: vector-sum.rkt 12:2 (for/fold: ((sum : Float 0.0)) ((i : Nonnegative-Fixnum (in-range l))) (+ sum (vector-ref v i))) -- dead else branch
TR opt: vector-sum.rkt 12:2 (for/fold: ((sum : Float 0.0)) ((i : Nonnegative-Fixnum (in-range l))) (+ sum (vector-ref v i))) -- dead else branch
TR opt: vector-sum.rkt 12:2 (for/fold: ((sum : Float 0.0)) ((i : Nonnegative-Fixnum (in-range l))) (+ sum (vector-ref v i))) -- dead else branch
TR opt: vector-sum.rkt 12:2 (for/fold: ((sum : Float 0.0)) ((i : Nonnegative-Fixnum (in-range l))) (+ sum (vector-ref v i))) -- dead else branch
TR opt: vector-sum.rkt 12:2 (for/fold: ((sum : Float 0.0)) ((i : Nonnegative-Fixnum (in-range l))) (+ sum (vector-ref v i))) -- dead else branch
TR opt: vector-sum.rkt 12:2 (for/fold: ((sum : Float 0.0)) ((i : Nonnegative-Fixnum (in-range l))) (+ sum (vector-ref v i))) -- fixnum bounded expr
TR opt: vector-sum.rkt 12:2 (for/fold: ((sum : Float 0.0)) ((i : Nonnegative-Fixnum (in-range l))) (+ sum (vector-ref v i))) -- fixnum bounded expr
TR opt: vector-sum.rkt 12:2 (for/fold: ((sum : Float 0.0)) ((i : Nonnegative-Fixnum (in-range l))) (+ sum (vector-ref v i))) -- fixnum bounded expr
TR opt: vector-sum.rkt 12:2 (for/fold: ((sum : Float 0.0)) ((i : Nonnegative-Fixnum (in-range l))) (+ sum (vector-ref v i))) -- fixnum bounded expr
TR opt: vector-sum.rkt 14:11 (vector-ref v i) -- vector partial bounds checking elimination
TR opt: vector-sum.rkt 14:11 (vector-ref v i) -- vector partial bounds checking elimination
TR opt: vector-sum.rkt 14:11 (vector-ref v i) -- vector partial bounds checking elimination
TR opt: vector-sum.rkt 14:11 (vector-ref v i) -- vector partial bounds checking elimination
TR opt: vector-sum.rkt 14:4 (+ sum (vector-ref v i)) -- binary float
TR opt: vector-sum.rkt 14:4 (+ sum (vector-ref v i)) -- binary float
TR opt: vector-sum.rkt 14:4 (+ sum (vector-ref v i)) -- binary float
TR opt: vector-sum.rkt 14:4 (+ sum (vector-ref v i)) -- binary float
TR opt: vector-sum.rkt 9:0 (for ((i (in-range 1))) (for: ((i : Nonnegative-Fixnum (in-range l))) (vector-set! v i (sin (exact->inexact i)))) (for/fold: ((sum : Float 0.0)) ((i : Nonnegative-Fixnum (in-range l))) (+ sum (vector-ref v i)))) -- dead else branch
TR opt: vector-sum.rkt 9:0 (for ((i (in-range 1))) (for: ((i : Nonnegative-Fixnum (in-range l))) (vector-set! v i (sin (exact->inexact i)))) (for/fold: ((sum : Float 0.0)) ((i : Nonnegative-Fixnum (in-range l))) (+ sum (vector-ref v i)))) -- dead else branch
TR opt: vector-sum.rkt 9:0 (for ((i (in-range 1))) (for: ((i : Nonnegative-Fixnum (in-range l))) (vector-set! v i (sin (exact->inexact i)))) (for/fold: ((sum : Float 0.0)) ((i : Nonnegative-Fixnum (in-range l))) (+ sum (vector-ref v i)))) -- dead else branch
TR opt: vector-sum.rkt 9:0 (for ((i (in-range 1))) (for: ((i : Nonnegative-Fixnum (in-range l))) (vector-set! v i (sin (exact->inexact i)))) (for/fold: ((sum : Float 0.0)) ((i : Nonnegative-Fixnum (in-range l))) (+ sum (vector-ref v i)))) -- dead else branch
TR opt: vector-sum.rkt 9:0 (for ((i (in-range 1))) (for: ((i : Nonnegative-Fixnum (in-range l))) (vector-set! v i (sin (exact->inexact i)))) (for/fold: ((sum : Float 0.0)) ((i : Nonnegative-Fixnum (in-range l))) (+ sum (vector-ref v i)))) -- dead else branch