From 69bd69f6d7a73dd22a93335842b20024e89a15ab Mon Sep 17 00:00:00 2001 From: Eric Dobson Date: Sun, 27 Oct 2013 10:30:02 -0700 Subject: [PATCH] Make unary float complex operations optimize. This removes an unnecessary allocation. original commit: f09ebdb74353c890a836c31297683014a46e4090 --- .../typed-racket/optimizer/float-complex.rkt | 7 ++++ .../tests/float-complex-float-small.rkt | 37 ++++++++++--------- .../optimizer/tests/float-complex-unary.rkt | 33 +++++++++++++++++ 3 files changed, 59 insertions(+), 18 deletions(-) create mode 100644 pkgs/typed-racket-pkgs/typed-racket-test/tests/typed-racket/optimizer/tests/float-complex-unary.rkt diff --git a/pkgs/typed-racket-pkgs/typed-racket-lib/typed-racket/optimizer/float-complex.rkt b/pkgs/typed-racket-pkgs/typed-racket-lib/typed-racket/optimizer/float-complex.rkt index 25aa6e9e..af54affb 100644 --- a/pkgs/typed-racket-pkgs/typed-racket-lib/typed-racket/optimizer/float-complex.rkt +++ b/pkgs/typed-racket-pkgs/typed-racket-lib/typed-racket/optimizer/float-complex.rkt @@ -122,6 +122,10 @@ (list #`((real-binding) #,(fl-sum #'(cs.real-binding ...))) #`((imag-binding) #,(fl-sum #'(cs.imag-binding ...))))))) + (pattern (#%plain-app op:+^ :unboxed-float-complex-opt-expr) + #:when (subtypeof? this-syntax -FloatComplex) + #:do [(log-unboxing-opt "unboxed unary float complex")]) + (pattern (#%plain-app op:-^ (~between cs:unboxed-float-complex-opt-expr 2 +inf.0) ...) #:when (subtypeof? this-syntax -FloatComplex) @@ -188,6 +192,9 @@ #`(unsafe-fl- (unsafe-fl* #,o1 #,(car e1)) (unsafe-fl* #,o2 #,(car e2)))))) res)))))))) + (pattern (#%plain-app op:*^ :unboxed-float-complex-opt-expr) + #:when (subtypeof? this-syntax -FloatComplex) + #:do [(log-unboxing-opt "unboxed unary float complex")]) (pattern (#%plain-app op:/^ c1:unboxed-float-complex-opt-expr diff --git a/pkgs/typed-racket-pkgs/typed-racket-test/tests/typed-racket/optimizer/tests/float-complex-float-small.rkt b/pkgs/typed-racket-pkgs/typed-racket-test/tests/typed-racket/optimizer/tests/float-complex-float-small.rkt index b0ed3e3d..f6dc2ada 100644 --- a/pkgs/typed-racket-pkgs/typed-racket-test/tests/typed-racket/optimizer/tests/float-complex-float-small.rkt +++ b/pkgs/typed-racket-pkgs/typed-racket-test/tests/typed-racket/optimizer/tests/float-complex-float-small.rkt @@ -1,23 +1,24 @@ #;#; #<