actually implement "fixing letrec"
authorAndy Wingo <wingo@pobox.com>
Thu, 6 Aug 2009 14:01:24 +0000 (16:01 +0200)
committerAndy Wingo <wingo@pobox.com>
Thu, 6 Aug 2009 14:01:24 +0000 (16:01 +0200)
commit80af1168751e59a3ee5c4a79febb2da23d36112d
treee4a459027805bd19e592370b5a202d0b3a1b74b8
parentbca488f186ce662e8c41b8ac1675fa2f03bb3fc2
actually implement "fixing letrec"

* module/Makefile.am (SOURCES): Reorganize so GHIL is compiled last,
  along with ecmascript.

* module/language/scheme/spec.scm: Remove references to GHIL, as it's
  bitrotten and obsolete..

* module/language/tree-il.scm (make-tree-il-folder): Rework so that we
  only have down and up procs, and call down and up on each element.
* module/language/tree-il/analyze.scm (analyze-lexicals): Fix a thinko
  handling let-values.

* module/language/tree-il/fix-letrec.scm: Actually implement fixing
  letrec. The resulting code will perform better, but violations of the
  letrec restriction are not detected. This behavior is allowed by the
  spec, but it is undesirable. Perhaps that will be fixed later.

* module/language/tree-il/inline.scm (inline!): Fix a case in which
  ((lambda args foo)) would be erroneously inlined to foo. Remove empty
  let, letrec, and fix statements.

* module/language/tree-il/primitives.scm (effect-free-primitive?): New
  public predicate.
module/Makefile.am
module/language/scheme/spec.scm
module/language/tree-il.scm
module/language/tree-il/analyze.scm
module/language/tree-il/fix-letrec.scm
module/language/tree-il/inline.scm
module/language/tree-il/primitives.scm