Cleanup string optimizations.

This commit is contained in:
Eric Dobson 2013-09-04 21:37:10 -07:00
parent 71516d0201
commit 010f9e1ef4

View File

@ -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)))