1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-06-03 10:40:21 +02:00
guile/module/language
Andy Wingo c21c89b138 add <fix> tree-il construct, and compile it
* libguile/vm-i-system.c (fix-closure): New instruction, for wiring
  together fixpoint procedures.

* module/Makefile.am (TREE_IL_LANG_SOURCES): Add fix-letrec.scm.

* module/language/glil/compile-assembly.scm (glil->assembly): Reindent
  the <glil-lexical> case, and handle 'fix for locally-bound vars.

* module/language/tree-il.scm (<fix>): Add the <fix> tree-il type and
  accessors, for fixed-point bindings. This IL construct is taken from
  the Waddell paper.
  (parse-tree-il, unparse-tree-il, tree-il->scheme, tree-il-fold)
  (pre-order!, post-order!): Update for <fix>.

* module/language/tree-il/analyze.scm (analyze-lexicals): Update for
  <fix>. The difference here is that the bindings may not be assigned,
  and are not marked as such. They are not boxed.
  (report-unused-variables): Update for <fix>.

* module/language/tree-il/compile-glil.scm (flatten): Compile <fix> to
  GLIL.

* module/language/tree-il/fix-letrec.scm: A stub implementation of
  fixing letrec -- will flesh out in a separate commit.

* module/language/tree-il/inline.scm: Fix license, it was mistakenly
  added with LGPL v2.1+.

* module/language/tree-il/optimize.scm (optimize!): Run the fix-letrec!
  pass.
2009-08-05 17:52:27 +02:00
..
assembly Add 32-bit characters 2009-07-29 06:38:32 -07:00
brainfuck remove lambda wrap hack of brainfuck tree-il compiler 2009-06-24 13:43:20 +02:00
bytecode Change Guile license to LGPLv3+ 2009-06-17 00:22:09 +01:00
ecmascript Change Guile license to LGPLv3+ 2009-06-17 00:22:09 +01:00
elisp Change Guile license to LGPLv3+ 2009-06-17 00:22:09 +01:00
ghil Change Guile license to LGPLv3+ 2009-06-17 00:22:09 +01:00
glil add <fix> tree-il construct, and compile it 2009-08-05 17:52:27 +02:00
objcode remove all mentions of "external" from the compiler and related code 2009-07-23 17:15:17 +02:00
r5rs Change Guile license to LGPLv3+ 2009-06-17 00:22:09 +01:00
scheme Change Guile license to LGPLv3+ 2009-06-17 00:22:09 +01:00
tree-il add <fix> tree-il construct, and compile it 2009-08-05 17:52:27 +02:00
value Change Guile license to LGPLv3+ 2009-06-17 00:22:09 +01:00
assembly.scm Add 32-bit characters 2009-07-29 06:38:32 -07:00
ghil.scm Change Guile license to LGPLv3+ 2009-06-17 00:22:09 +01:00
glil.scm remove all mentions of "external" from the compiler and related code 2009-07-23 17:15:17 +02:00
objcode.scm Change Guile license to LGPLv3+ 2009-06-17 00:22:09 +01:00
tree-il.scm add <fix> tree-il construct, and compile it 2009-08-05 17:52:27 +02:00