From e9e7155bcec44c467adcbb623be23569ee332e9a Mon Sep 17 00:00:00 2001 From: "Guillermo J. Rozas" Date: Sun, 6 May 1990 00:34:56 +0000 Subject: [PATCH] Fix one more problem in the interaction between multiclosures and subproblem free variables. --- v7/src/compiler/fgopt/subfre.scm | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/v7/src/compiler/fgopt/subfre.scm b/v7/src/compiler/fgopt/subfre.scm index 41d37b9fd..02f7bb004 100644 --- a/v7/src/compiler/fgopt/subfre.scm +++ b/v7/src/compiler/fgopt/subfre.scm @@ -1,6 +1,6 @@ #| -*-Scheme-*- -$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/fgopt/subfre.scm,v 1.6 1990/05/04 15:15:18 jinx Exp $ +$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/fgopt/subfre.scm,v 1.7 1990/05/06 00:34:56 jinx Rel $ Copyright (c) 1988, 1989, 1990 Massachusetts Institute of Technology @@ -79,8 +79,10 @@ MIT in each case. |# lvalue-integrated?)) (define (closure) - (block-bound-variables - (block-shared-block (procedure-closing-block proc)))) + (eq-set-union + (default) + (block-bound-variables + (block-shared-block (procedure-closing-block proc))))) (if (or (not (procedure/closure? proc)) (procedure/trivial-closure? proc)) @@ -98,7 +100,7 @@ MIT in each case. |# ;; In reality, only the indirection variable or the default ;; set is needed, depending on where the reference occurs. ;; This is always safe, however. - (cons (cdr how) (closure))) + (eq-set-adjoin (cdr how) (closure))) (else (error "walk-procedure: Unknown closure method" proc)))))) -- 2.25.1