#| -*-Scheme-*-
-$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/base/blocks.scm,v 4.9 1988/12/16 13:35:15 cph Exp $
+$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/base/blocks.scm,v 4.10 1989/04/21 16:58:46 markf Rel $
Copyright (c) 1988 Massachusetts Institute of Technology
frame-size ;for stack-allocated frames, size in words
procedure ;procedure for which this is invocation block, if any
bound-variables ;list of variables bound by this block
- free-variables ;list of variables free in this block
+ free-variables ;list of variables free in this block or any children
+ variables-nontransitively-free
+ ;list of variables free in this block
declarations ;list of declarations
applications ;list of applications lexically within this block
interned-variables ;alist of interned SCode variable objects
stack-link ;for stack block, adjacent block on stack
popping-limits ;for stack block (see continuation analysis)
popping-limit ;for stack block (see continuation analysis)
+ layout-frozen? ;used by frame reuse to tell parameter
+ ;analysis not to alter this block's layout
+ ;(i.e., don't make any of the block's
+ ;procedure's parameters be passed by register)
)
(define *blocks*)
(define (make-block parent type)
(let ((block
(make-rvalue block-tag (enumeration/name->index block-types type)
- parent '() '() false false '() '() '() '() '() '() false
- false 'UNKNOWN 'UNKNOWN 'UNKNOWN)))
+ parent '() '() false false '()'() '() '() '() '() '()
+ false false 'UNKNOWN 'UNKNOWN 'UNKNOWN false)))
(if parent
(set-block-children! parent (cons block (block-children parent))))
(set! *blocks* (cons block *blocks*))