Refactoring of the optimizer.

This commit is contained in:
Vincent St-Amour 2010-07-22 17:48:44 -04:00
parent 82588438c2
commit 0493e6f762
9 changed files with 11 additions and 12 deletions

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -1,4 +1,4 @@
#lang typed/scheme
(: f ((MListof Integer) -> Integer))
(define f
(#%plain-lambda (x) (mcar x)))
(lambda (x) (mcar x)))

View File

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

View File

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

View File

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