From d7052da6912b71098274cea02221d22d663779a3 Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Thu, 5 Dec 2019 15:56:32 -0700 Subject: [PATCH] schemify: more determinism for lifted procedures A further repair to 6f919635da. --- racket/src/schemify/lift.rkt | 43 ++++++++++++++++++++---------------- 1 file changed, 24 insertions(+), 19 deletions(-) diff --git a/racket/src/schemify/lift.rkt b/racket/src/schemify/lift.rkt index f9803ad371..4b0f92bc55 100644 --- a/racket/src/schemify/lift.rkt +++ b/racket/src/schemify/lift.rkt @@ -621,25 +621,30 @@ ;; Create bindings for lifted functions, adding new arguments ;; as the functions are lifted (define (extract-lifted-bindings lifts empties) - (define bindings - (for/list ([(f proc) (in-hash lifts)] - #:when (liftable? proc)) - (let* ([new-args (liftable-frees proc)] - [frees (for/hash ([arg (in-list new-args)]) - (values arg #t))] - [rhs (liftable-expr proc)]) - `[,f ,(match rhs - [`(lambda ,args . ,body) - (let ([body (convert-lifted-calls-in-seq/box-mutated body args lifts frees empties)]) - (reannotate rhs `(lambda ,(append new-args args) . ,body)))] - [`(case-lambda [,argss . ,bodys] ...) - (reannotate rhs `(case-lambda - ,@(for/list ([args (in-list argss)] - [body (in-list bodys)]) - (let ([body (convert-lifted-calls-in-seq/box-mutated body args lifts frees empties)]) - `[,(append new-args args) . ,body]))))])]))) - ;; Improve determinsism: - (sort bindings symbol