~ chicken-core (chicken-5) 3cc1e64e04c8fcab1d0d024ecb80b7e8a560c5c0
commit 3cc1e64e04c8fcab1d0d024ecb80b7e8a560c5c0 Author: felix <felix@call-with-current-continuation.org> AuthorDate: Tue Jul 12 20:59:16 2011 +0200 Commit: felix <felix@call-with-current-continuation.org> CommitDate: Tue Jul 12 20:59:16 2011 +0200 remove duplicates from closure records diff --git a/compiler.scm b/compiler.scm index 973795b2..7cdaa36b 100644 --- a/compiler.scm +++ b/compiler.scm @@ -2196,9 +2196,13 @@ (lambda (vars argc rest) (let ((id (if here (first params) 'toplevel))) (fluid-let ((lexicals (append locals lexicals))) - (let ((c (gather (first subs) id vars))) + (let ((c (delete-duplicates (gather (first subs) id vars) eq?))) (put! db id 'closure-size (length c)) (put! db id 'captured-variables c) + #;(print "X: " id " -> " + (sort c + (lambda (x y) + (string<? (symbol->string x) (symbol->string y))))) (lset-difference eq? c locals vars))))))) (else (concatenate (map (lambda (n) (gather n here locals)) subs)) ) ) ))Trap