1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-06-11 22:31:12 +02:00
guile/module/language
Andy Wingo a1a482e0e9 and, or, cond etc use syntax-rules, compile scheme through tree-il
* libguile/vm-i-system.c:
* libguile/vm-engine.h (ASSERT_BOUND): New assertion, that a value is
  bound. Used by local-ref and external-ref in paranoid mode.

* module/ice-9/boot-9.scm (and, or, cond, case, do): Since we are
  switching to use psyntax as the first pass of the compiler, and perhaps
  soon of the interpreter too, we need to make sure it expands out all
  forms to primitive expressions. So define expanders for these derived
  syntax forms, as in the R5RS report.

* module/ice-9/psyntax-pp.scm: Regenerate, with core forms fully
  expanded.

* module/ice-9/psyntax.scm (build-void): New constructor, for making
  undefined values.
  (build-primref): Add in a hack so that primitive refs in the boot
  module expand out to toplevel refs, not module refs.
  (chi-void): Use build-void.
  (if): Define an expander for if that calls build-conditional.

* module/language/scheme/compile-tree-il.scm (compile-tree-il): Use let*
  so as not to depend on binding order for the result of
  (current-module).

* module/language/scheme/spec.scm (scheme): Switch over to tree-il as the
  primary intermediate language. Not yet fully tested, but at least it
  can compile psyntax-pp.scm.

* module/language/tree-il/analyze.scm (analyze-lexicals): Arguments don't
  count towards a function's nlocs.

* module/language/tree-il/compile-glil.scm (*comp-module*, compile-glil):
  Define a "compilation module" fluid.
  (flatten-lambda): Fix a call to make-glil-argument. Fix bug in
  heapifying arguments.
  (flatten): Fix number of arguments passed to apply instruction. Add a
  special case for `(values ...)'. If inlining primitive-refs fails,
  try expanding into toplevel-refs if the comp-module's variable is the
  same as the root variable.

* module/language/tree-il/optimize.scm (resolve-primitives!): Add missing
  src variable for <module-ref>.

* test-suite/tests/tree-il.test ("lambda"): Fix nlocs counts. Add a
  closure test case.
2009-05-20 11:15:22 +02:00
..
assembly compilation passes return third value: the continuation environment 2009-04-16 15:20:40 +02:00
bytecode compilation passes return third value: the continuation environment 2009-04-16 15:20:40 +02:00
ecmascript compilation passes return third value: the continuation environment 2009-04-16 15:20:40 +02:00
elisp remove .cvsignore files 2008-11-10 12:17:18 +01:00
ghil tree-il -> glil compiler works now, at least in initial tests 2009-05-15 23:44:14 +02:00
glil tree-il -> glil compiler works now, at least in initial tests 2009-05-15 23:44:14 +02:00
objcode compilation passes return third value: the continuation environment 2009-04-16 15:20:40 +02:00
r5rs remove GPKG.def files 2009-01-29 21:12:00 +01:00
scheme and, or, cond etc use syntax-rules, compile scheme through tree-il 2009-05-20 11:15:22 +02:00
tree-il and, or, cond etc use syntax-rules, compile scheme through tree-il 2009-05-20 11:15:22 +02:00
value Aggregate makefiles for module/system' and module/language'. 2009-02-24 23:54:16 +01:00
assembly.scm Add `load-unsigned-integer' instruction. 2009-02-18 00:54:05 +01:00
ghil.scm support expression-by-expression compilation 2009-04-16 17:49:59 +02:00
glil.scm tree-il -> glil compiler works now, at least in initial tests 2009-05-15 23:44:14 +02:00
objcode.scm static opcodes; refactor program/objcode division; use new assembly pipeline 2009-01-29 21:12:00 +01:00
tree-il.scm add tree-il->glil compilation test suite 2009-05-18 23:45:35 +02:00