~ 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