(define (ensure-fun-data fun)
(or (hashq-ref fun-data-table fun)
(call-with-values (lambda ()
- ((make-cont-folder #f label-count max-label)
- (lambda (k cont label-count max-label)
- (values (1+ label-count) (max k max-label)))
- fun 0 -1))
+ (match fun
+ (($ $fun free body)
+ ((make-cont-folder #f label-count max-label)
+ (lambda (k cont label-count max-label)
+ (values (1+ label-count) (max k max-label)))
+ body 0 -1))))
(lambda (label-count max-label)
(let* ((min-label (- (1+ max-label) label-count))
(effects (compute-effects dfg min-label label-count))