~ 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