1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-06-10 22:10:21 +02:00
guile/module
Andy Wingo f4aa8d53a0 call-with-values can make fewer closures
* module/language/tree-il.scm: Rename let-exp and letrec-exp to let-body
  and letrec-body. Add <let-values>, a one-expression let-values that
  should avoid the needless creation of two closures in many common
  multiple-value cases. We'll need to add an optimization pass to the
  compiler to produce this form, though, as well as rewriting lambdas
  into lets, etc.

  I added this form instead of adding more special cases to the
  call-with-values compile code because it's a useful intermediate form
  -- it will allow the optimizer to perform constant folding across more
  code.

* module/language/tree-il.scm (parse-tree-il, unparse-tree-il)
  (tree-il->scheme, post-order!, pre-order!): Adapt to let/letrec body
  renaming, and let-values.

* module/language/tree-il/analyze.scm (analyze-lexicals): Adapt for
  renaming, and add cases for let-values.

* module/language/tree-il/compile-glil.scm (flatten): Add a new context,
  `vals', used by let-values code for the values producer. Code that
  produces multiple values can then jump to the let-values MV return
  address directly, instead of trampolining into a procedure. Add code to
  compile let-values.
2009-06-08 00:38:49 +02:00
..
ice-9 fix incorrect inlining of + when + is locally redefined 2009-06-07 00:53:48 +02:00
language call-with-values can make fewer closures 2009-06-08 00:38:49 +02:00
oop fix bug in goops' method cache with rest args 2009-06-07 00:53:48 +02:00
rnrs add ability to compile uniform arrays 2009-06-05 16:31:38 +02:00
scripts disable autocompilation when running guile-tools compile 2009-06-05 11:47:34 +02:00
srfi Merge branch 'master' of git://git.savannah.gnu.org/guile 2009-06-02 09:35:02 -04:00
system stamp .go with timestamp of .scm; a fresh go has same mtime of .scm 2009-06-05 10:51:21 +02:00
Makefile.am compile and install srfi-98. 2009-06-05 10:32:52 +02:00