From 0de549800e8bb5dcbf900807984d6b15938eb623 Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Wed, 9 Dec 2020 06:31:32 -0700 Subject: [PATCH] Chez Scheme: repair cp0 record optimization --- racket/src/ChezScheme/s/cp0.ss | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/racket/src/ChezScheme/s/cp0.ss b/racket/src/ChezScheme/s/cp0.ss index d1c03e17c9..636047c7c4 100644 --- a/racket/src/ChezScheme/s/cp0.ss +++ b/racket/src/ChezScheme/s/cp0.ss @@ -4107,16 +4107,19 @@ [(record ,rtd1 ,rtd-expr1 ,e* ...) (guard (< d (length e*)) (rtd-immutable-field? rtd1 d)) - (let ([e (list-ref e* d)]) - (and - (nanopass-case (Lsrc Expr) e - [(quote ,d) #t] - [(ref ,maybe-src ,x) (not (prelex-assigned x))] - [,pr (all-set? (prim-mask proc) (primref-flags pr))] - [else #f]) - (begin - (residualize-seq (list ?r ?i) '() ctxt) - (non-result-exp i-expr (non-result-exp r-expr e)))))] + (let* ([e (list-ref e* d)] + [new-e (nanopass-case (Lsrc Expr) e + [(quote ,d) e] + [(ref ,maybe-src ,x) + (and (not (prelex-assigned x)) + (residualize-ref maybe-src x sc))] + [,pr (and (all-set? (prim-mask proc) (primref-flags pr)) + e)] + [else #f])]) + (and new-e + (begin + (residualize-seq (list ?r ?i) '() ctxt) + (non-result-exp i-expr (non-result-exp r-expr new-e)))))] [else #f])]))] [else #f]))])