Cleanup string optimizations.
This commit is contained in:
parent
71516d0201
commit
010f9e1ef4
|
@ -7,32 +7,17 @@
|
||||||
(types abbrev)
|
(types abbrev)
|
||||||
(optimizer utils logging))
|
(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
|
(define-syntax-class string-opt-expr
|
||||||
#:commit
|
#:commit
|
||||||
(pattern (#%plain-app (~and op (~literal string-length)) s:string-expr)
|
(pattern (#%plain-app op:string-length^ s:opt-expr)
|
||||||
#:with opt
|
#:do [(log-opt "string-length" "String check elimination.")]
|
||||||
(begin (log-optimization "string-length"
|
#:with opt #'(op.unsafe s.opt))
|
||||||
"String check elimination."
|
(pattern (#%plain-app op:bytes-length^ s:opt-expr)
|
||||||
this-syntax)
|
#:do [(log-opt "bytes-length" "Byte string check elimination.")]
|
||||||
(add-disappeared-use #'op)
|
#:with opt #'(op.unsafe s.opt)))
|
||||||
#'(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))))
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user