diff options
Diffstat (limited to 'module')
-rw-r--r-- | module/language/tree-il/cse.scm | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/module/language/tree-il/cse.scm b/module/language/tree-il/cse.scm index b8e722967..d8c7e3fc9 100644 --- a/module/language/tree-il/cse.scm +++ b/module/language/tree-il/cse.scm @@ -330,10 +330,11 @@ (and (< n env-len) (match (vlist-ref env n) ((#(exp* name sym db-len*) . h*) - (and (unroll db m (- db-len db-len*)) - (if (and (= h h*) (tree-il=? exp* exp)) - (make-lexical-ref (tree-il-src exp) name sym) - (lp (1+ n) (- db-len db-len*)))))))))))) + (let ((niter (- (- db-len db-len*) m))) + (and (unroll db m niter) + (if (and (= h h*) (tree-il=? exp* exp)) + (make-lexical-ref (tree-il-src exp) name sym) + (lp (1+ n) (- db-len db-len*))))))))))))) (define (lookup-lexical sym env) (let ((env-len (vlist-length env))) |