- "Self consistent closing": A group of procedures whose only free
authorGuillermo J. Rozas <edu/mit/csail/zurich/gjr>
Tue, 1 Nov 1988 04:58:20 +0000 (04:58 +0000)
committerGuillermo J. Rozas <edu/mit/csail/zurich/gjr>
Tue, 1 Nov 1988 04:58:20 +0000 (04:58 +0000)
commit6ec7f47ec7ac3231e76a40a30f89116808409e49
tree7e98b28cbaa90ce2e8bb56a11908f08ddca55156
parent6628b6e8ba712407a3360aff87ae94c15d310752
- "Self consistent closing": A group of procedures whose only free
variables represent each other will be represented as trivial closures
that reference each other by direct pc offsets.

- Known trivial closure variables are now integrated.

- Similar procedures used in operator position may not be closed.
There is a notion of a virtual closure: A closure whose environment is
known, but whose code pointer is not.

- Procedures now remember why they were closed.

- Once-only assignments to top-level or completely free variables are
done with local-assignment rather than with assignment caches.

- Variuos fixes to the closure analysis.  Lambda expressions in
operand position are closed only if they are escaping their context.
This was broken when the uniform closing strategy (all closures close
to the top) was introduced in the front end.
27 files changed:
v7/src/compiler/base/blocks.scm
v7/src/compiler/base/ctypes.scm
v7/src/compiler/base/lvalue.scm
v7/src/compiler/base/macros.scm
v7/src/compiler/base/proced.scm
v7/src/compiler/base/switch.scm
v7/src/compiler/base/toplev.scm
v7/src/compiler/fggen/canon.scm
v7/src/compiler/fggen/fggen.scm
v7/src/compiler/fgopt/blktyp.scm
v7/src/compiler/fgopt/closan.scm
v7/src/compiler/fgopt/offset.scm
v7/src/compiler/fgopt/order.scm
v7/src/compiler/machines/bobcat/compiler.pkg
v7/src/compiler/machines/bobcat/compiler.sf
v7/src/compiler/machines/bobcat/dassm2.scm
v7/src/compiler/machines/bobcat/decls.scm
v7/src/compiler/machines/bobcat/make.scm-68040
v7/src/compiler/machines/bobcat/rules3.scm
v7/src/compiler/rtlbase/rtlexp.scm
v7/src/compiler/rtlbase/rtlty1.scm
v7/src/compiler/rtlgen/fndblk.scm
v7/src/compiler/rtlgen/opncod.scm
v7/src/compiler/rtlgen/rgcomb.scm
v7/src/compiler/rtlgen/rgproc.scm
v7/src/compiler/rtlgen/rgrval.scm
v7/src/compiler/rtlopt/rcse1.scm