From 010f9e1ef4345ef770dfdf8100e1385d468e1ae7 Mon Sep 17 00:00:00 2001 From: Eric Dobson Date: Wed, 4 Sep 2013 21:37:10 -0700 Subject: [PATCH] Cleanup string optimizations. --- .../typed-racket/optimizer/string.rkt | 35 ++++++------------- 1 file changed, 10 insertions(+), 25 deletions(-) diff --git a/pkgs/typed-racket-pkgs/typed-racket-lib/typed-racket/optimizer/string.rkt b/pkgs/typed-racket-pkgs/typed-racket-lib/typed-racket/optimizer/string.rkt index 04f2d25955..eb09388894 100644 --- a/pkgs/typed-racket-pkgs/typed-racket-lib/typed-racket/optimizer/string.rkt +++ b/pkgs/typed-racket-pkgs/typed-racket-lib/typed-racket/optimizer/string.rkt @@ -7,32 +7,17 @@ (types abbrev) (optimizer utils logging)) -(provide string-opt-expr string-expr bytes-expr) +(provide string-opt-expr) + +(define-unsafe-syntax-class string-length) +(define-unsafe-syntax-class bytes-length) -(define-syntax-class string-expr - #:commit - (pattern e:expr - #:when (isoftype? #'e -String) - #:with opt ((optimize) #'e))) -(define-syntax-class bytes-expr - #:commit - (pattern e:expr - #:when (isoftype? #'e -Bytes) - #:with opt ((optimize) #'e))) (define-syntax-class string-opt-expr #:commit - (pattern (#%plain-app (~and op (~literal string-length)) s:string-expr) - #:with opt - (begin (log-optimization "string-length" - "String check elimination." - this-syntax) - (add-disappeared-use #'op) - #'(unsafe-string-length s.opt))) - (pattern (#%plain-app (~and op (~literal bytes-length)) s:bytes-expr) - #:with opt - (begin (log-optimization "bytes-length" - "Byte string check elimination." - this-syntax) - (add-disappeared-use #'op) - #'(unsafe-bytes-length s.opt)))) + (pattern (#%plain-app op:string-length^ s:opt-expr) + #:do [(log-opt "string-length" "String check elimination.")] + #:with opt #'(op.unsafe s.opt)) + (pattern (#%plain-app op:bytes-length^ s:opt-expr) + #:do [(log-opt "bytes-length" "Byte string check elimination.")] + #:with opt #'(op.unsafe s.opt)))