Optimize integers used as sequences.
original commit: a62444fa3e218aa7675c546051badfd6b7b9ae13
This commit is contained in:
parent
8b65ec4e4b
commit
4522587510
10
collects/tests/typed-racket/optimizer/tests/in-range.rkt
Normal file
10
collects/tests/typed-racket/optimizer/tests/in-range.rkt
Normal file
|
@ -0,0 +1,10 @@
|
|||
#;
|
||||
(
|
||||
TR opt: in-range.rkt 6:0 #%module-begin -- in-range
|
||||
0123)
|
||||
|
||||
#lang typed/scheme
|
||||
#:optimize
|
||||
|
||||
(for ([i 4])
|
||||
(display i))
|
|
@ -8,7 +8,7 @@
|
|||
(types numeric-tower type-table)
|
||||
(optimizer utils numeric-utils logging fixnum))
|
||||
|
||||
(provide float-opt-expr float-arg-expr)
|
||||
(provide float-opt-expr float-arg-expr int-expr)
|
||||
|
||||
|
||||
(define (mk-float-tbl generic)
|
||||
|
|
|
@ -6,7 +6,8 @@
|
|||
"../utils/utils.rkt" "../utils/tc-utils.rkt"
|
||||
(rep type-rep)
|
||||
(types abbrev type-table utils)
|
||||
(optimizer utils logging string))
|
||||
(optimizer utils logging string
|
||||
float)) ; for int-expr
|
||||
|
||||
(provide sequence-opt-expr)
|
||||
|
||||
|
@ -86,4 +87,16 @@
|
|||
0
|
||||
(lambda (x) (unsafe-fx< x len))
|
||||
(lambda (x) #t)
|
||||
(lambda (x y) #t)))))
|
||||
(pattern (#%plain-app op:id _ s) ; one-arg in-range
|
||||
#:when (id-from? #'op 'make-sequence 'racket/private/for)
|
||||
#:with s*:int-expr #'s
|
||||
#:with opt
|
||||
(begin (log-optimization "in-range" seq-opt-msg this-syntax)
|
||||
#'(let* ((end s*.opt))
|
||||
(values (lambda (x) x)
|
||||
(lambda (x) (unsafe-fx+ 1 x))
|
||||
0
|
||||
(lambda (x) (unsafe-fx< x end))
|
||||
(lambda (x) #t)
|
||||
(lambda (x y) #t))))))
|
||||
|
|
Loading…
Reference in New Issue
Block a user