Refactoring of the optimizer.
This commit is contained in:
parent
82588438c2
commit
0493e6f762
|
@ -14,7 +14,7 @@
|
|||
(lambda (x y) #t)))))
|
||||
(void)
|
||||
((letrec-values (((for-loop)
|
||||
(#%plain-lambda
|
||||
(lambda
|
||||
(fold-var pos)
|
||||
(if (pos-cont? pos)
|
||||
(let-values (((i) (pos->vals pos)))
|
||||
|
|
|
@ -11,7 +11,7 @@
|
|||
(lambda (x y) #t)))))
|
||||
(void)
|
||||
((letrec-values (((for-loop)
|
||||
(#%plain-lambda
|
||||
(lambda
|
||||
(fold-var pos)
|
||||
(if (pos-cont? pos)
|
||||
(let-values (((i) (pos->vals pos)))
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
(lambda (x y) #t)))))
|
||||
(void)
|
||||
((letrec-values (((for-loop)
|
||||
(#%plain-lambda
|
||||
(lambda
|
||||
(fold-var pos)
|
||||
(if (pos-cont? pos)
|
||||
(let-values (((i) (pos->vals pos)))
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
(lambda (x y) #t)))))
|
||||
(void)
|
||||
((letrec-values (((for-loop)
|
||||
(#%plain-lambda
|
||||
(lambda
|
||||
(fold-var pos)
|
||||
(if (pos-cont? pos)
|
||||
(let-values (((i) (pos->vals pos)))
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
(module invalid-binary-nonzero-fixnum typed/scheme
|
||||
(: f ( -> Void))
|
||||
(define f ; in a function, to prevent evaluation
|
||||
(#%plain-lambda () (display (quotient 4 0))))) ; 2 fixnums, but the second is 0, cannot optimize
|
||||
(lambda () (display (quotient 4 0))))) ; 2 fixnums, but the second is 0, cannot optimize
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
#lang typed/scheme
|
||||
(: f ((MListof Integer) -> Integer))
|
||||
(define f
|
||||
(#%plain-lambda (x) (mcar x)))
|
||||
(lambda (x) (mcar x)))
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
(module invalid-vector-ref typed/scheme
|
||||
(: f ((Vectorof Integer) -> Integer))
|
||||
(define f
|
||||
(#%plain-lambda (x) (vector-ref x 0)))) ; type is (Vectorof Integer), length is unknown, can't optimize
|
||||
(lambda (x) (vector-ref x 0)))) ; type is (Vectorof Integer), length is unknown, can't optimize
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
(module invalid-vector-set typed/scheme
|
||||
(: f ((Vectorof Integer) -> Void))
|
||||
(define f
|
||||
(#%plain-lambda (x) (vector-set! x 0 2)))) ; type is (Vectorof Integer), length is ot known, can't optimize
|
||||
(lambda (x) (vector-set! x 0 2)))) ; type is (Vectorof Integer), length is not known, can't optimize
|
||||
|
|
|
@ -35,10 +35,9 @@
|
|||
(pattern e:dead-code-opt-expr #:with opt #'e.opt)
|
||||
|
||||
;; boring cases, just recur down
|
||||
(pattern (#%plain-lambda formals e:opt-expr ...)
|
||||
#:with opt #'(#%plain-lambda formals e.opt ...))
|
||||
(pattern (define-values formals e:opt-expr ...)
|
||||
#:with opt #'(define-values formals e.opt ...))
|
||||
(pattern ((~and op (~or (~literal #%plain-lambda) (~literal define-values)))
|
||||
formals e:opt-expr ...)
|
||||
#:with opt #'(op formals e.opt ...))
|
||||
(pattern (case-lambda [formals e:opt-expr ...] ...)
|
||||
#:with opt #'(case-lambda [formals e.opt ...] ...))
|
||||
(pattern (let-values ([ids e-rhs:opt-expr] ...) e-body:opt-expr ...)
|
||||
|
|
Loading…
Reference in New Issue
Block a user