~ 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