~ 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