mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-04-30 03:40:34 +02:00
Fix free var computation in baseline compiler for lexical set!
* module/language/tree-il/compile-bytecode.scm (split-closures): Adjoin lexical being set to free vars.
This commit is contained in:
parent
ffb210567d
commit
73ac53af73
1 changed files with 3 additions and 2 deletions
|
@ -43,7 +43,7 @@
|
||||||
#:use-module (language tree-il)
|
#:use-module (language tree-il)
|
||||||
#:use-module ((srfi srfi-1) #:select (filter-map
|
#:use-module ((srfi srfi-1) #:select (filter-map
|
||||||
fold
|
fold
|
||||||
lset-union lset-difference))
|
lset-adjoin lset-union lset-difference))
|
||||||
#:use-module (srfi srfi-9)
|
#:use-module (srfi srfi-9)
|
||||||
#:use-module (system base types internal)
|
#:use-module (system base types internal)
|
||||||
#:use-module (system vm assembler)
|
#:use-module (system vm assembler)
|
||||||
|
@ -549,6 +549,7 @@
|
||||||
;; lambdas are seen, and adding set! vars to `assigned'.
|
;; lambdas are seen, and adding set! vars to `assigned'.
|
||||||
(define (visit-closure exp module-scope)
|
(define (visit-closure exp module-scope)
|
||||||
(define (visit exp)
|
(define (visit exp)
|
||||||
|
(define (adjoin sym f) (lset-adjoin eq? f sym))
|
||||||
(define (union f1 f2) (lset-union eq? f1 f2))
|
(define (union f1 f2) (lset-union eq? f1 f2))
|
||||||
(define (union3 f1 f2 f3) (union f1 (union f2 f3)))
|
(define (union3 f1 f2 f3) (union f1 (union f2 f3)))
|
||||||
(define (difference f1 f2) (lset-difference eq? f1 f2))
|
(define (difference f1 f2) (lset-difference eq? f1 f2))
|
||||||
|
@ -605,7 +606,7 @@
|
||||||
|
|
||||||
(($ <lexical-set> src name gensym exp)
|
(($ <lexical-set> src name gensym exp)
|
||||||
(hashq-set! assigned gensym #t)
|
(hashq-set! assigned gensym #t)
|
||||||
(visit exp))
|
(adjoin gensym (visit exp)))
|
||||||
|
|
||||||
(($ <seq> src head tail)
|
(($ <seq> src head tail)
|
||||||
(union (visit head) (visit tail)))
|
(union (visit head) (visit tail)))
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue