diff --git a/module/language/cps/dce.scm b/module/language/cps/dce.scm index 2f34c387b..b3dba097c 100644 --- a/module/language/cps/dce.scm +++ b/module/language/cps/dce.scm @@ -80,31 +80,30 @@ defs)) (define (elide-type-checks! fun dfg effects min-label label-count) - (when (< label-count 2000) - (match fun - (($ $cont kfun ($ $kfun src meta min-var)) - (let ((typev (infer-types fun dfg))) - (define (idx->label idx) (+ idx min-label)) - (define (var->idx var) (- var min-var)) - (define (visit-primcall lidx fx name args) - (when (primcall-types-check? typev (idx->label lidx) name args) - (vector-set! effects lidx - (logand fx (lognot &type-check))))) - (let lp ((lidx 0)) - (when (< lidx label-count) - (let ((fx (vector-ref effects lidx))) - (unless (causes-all-effects? fx) - (when (causes-effect? fx &type-check) - (match (lookup-cont (idx->label lidx) dfg) - (($ $kargs _ _ term) - (match (find-call term) - (($ $continue k src ($ $primcall name args)) - (visit-primcall lidx fx name args)) - (($ $continue k src ($ $branch _ ($primcall name args))) - (visit-primcall lidx fx name args)) - (_ #f))) - (_ #f))))) - (lp (1+ lidx))))))))) + (match fun + (($ $cont kfun ($ $kfun src meta min-var)) + (let ((typev (infer-types fun dfg))) + (define (idx->label idx) (+ idx min-label)) + (define (var->idx var) (- var min-var)) + (define (visit-primcall lidx fx name args) + (when (primcall-types-check? typev (idx->label lidx) name args) + (vector-set! effects lidx + (logand fx (lognot &type-check))))) + (let lp ((lidx 0)) + (when (< lidx label-count) + (let ((fx (vector-ref effects lidx))) + (unless (causes-all-effects? fx) + (when (causes-effect? fx &type-check) + (match (lookup-cont (idx->label lidx) dfg) + (($ $kargs _ _ term) + (match (find-call term) + (($ $continue k src ($ $primcall name args)) + (visit-primcall lidx fx name args)) + (($ $continue k src ($ $branch _ ($primcall name args))) + (visit-primcall lidx fx name args)) + (_ #f))) + (_ #f))))) + (lp (1+ lidx)))))))) (define (compute-live-code fun) (let* ((fun-data-table (make-hash-table))