~ chicken-core (chicken-5) a02d077631437e0a42af2f719928a6a366dbef6f


commit a02d077631437e0a42af2f719928a6a366dbef6f
Merge: 7202de09 e31d2830
Author:     felix <felix@call-with-current-continuation.org>
AuthorDate: Fri Jul 15 15:08:53 2011 +0200
Commit:     felix <felix@call-with-current-continuation.org>
CommitDate: Fri Jul 15 15:08:53 2011 +0200

    resolved conflicts

diff --cc compiler.scm
index 2182baba,7c979a34..7fc629d7
--- a/compiler.scm
+++ b/compiler.scm
@@@ -2194,14 -2184,14 +2184,14 @@@
  	   (decompose-lambda-list
  	    (third params)
  	    (lambda (vars argc rest)
 -	      (let* ([id (if here (first params) 'toplevel)]
 -		     [capturedvars (captured-variables (car subs) env)]
 -		     [csize (length capturedvars)] )
 -		(put! db id 'closure-size csize)
 -		(put! db id 'captured-variables capturedvars)
 -		(gather (car subs) id (append vars env)) ) ) ) )
 +	      (let ((id (if here (first params) 'toplevel)))
 +		(fluid-let ((lexicals (append locals lexicals)))
 +		  (let ((c (delete-duplicates (gather (first subs) id vars) eq?)))
 +		    (put! db id 'closure-size (length c))
 +		    (put! db id 'captured-variables c)
 +		    (lset-difference eq? c locals vars)))))))
  	
- 	  (else (concatenate (map (lambda (n) (gather n here locals)) subs)) ) ) ))
+ 	  (else (for-each (lambda (n) (gather n here env)) subs)) ) ) )
  
      ;; Create explicit closures:
      (define (transform n here closure)
Trap