Fixed a bug that caused the let optimizations to choke on TR-introduced code.
This commit is contained in:
parent
f08456cf07
commit
b58461da2d
|
@ -66,6 +66,10 @@
|
||||||
;; this covers loop variables
|
;; this covers loop variables
|
||||||
(partition
|
(partition
|
||||||
(lambda (p)
|
(lambda (p)
|
||||||
|
(and
|
||||||
|
;; typed racket introduces let-values that bind no values
|
||||||
|
;; we can't optimize these
|
||||||
|
(not (null? (syntax-e (car p))))
|
||||||
(let ((fun-name (car (syntax-e (car p)))))
|
(let ((fun-name (car (syntax-e (car p)))))
|
||||||
(and
|
(and
|
||||||
;; if the function escapes, we can't change it's interface
|
;; if the function escapes, we can't change it's interface
|
||||||
|
@ -105,7 +109,7 @@
|
||||||
(loop unboxed (cons i boxed)
|
(loop unboxed (cons i boxed)
|
||||||
(add1 i) (cdr params) (cdr doms))]))]
|
(add1 i) (cdr params) (cdr doms))]))]
|
||||||
[_ #f])]
|
[_ #f])]
|
||||||
[_ #f]))))
|
[_ #f])))))
|
||||||
rest)))
|
rest)))
|
||||||
(list candidates function-candidates others))
|
(list candidates function-candidates others))
|
||||||
#:with (opt-candidates:unboxed-let-clause ...) #'(candidates ...)
|
#:with (opt-candidates:unboxed-let-clause ...) #'(candidates ...)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user