Andy Wingo
82f4bac420
RTL VM: receive-values has allow-extra? flag
...
* libguile/vm-engine.c (receive-values): Add an ALLOW-EXTRA? flag in
unused bits of the third word. Without it, receive-values will check
for the exact number of incoming values.
* libguile/vm.c (vm_error_wrong_number_of_values): New error case.
* module/language/cps/compile-rtl.scm (emit-rtl-sequence): Adapt to add
the ALLOW-EXTRA? flag.
2013-10-14 16:09:43 +02:00
Andy Wingo
e675e9bd39
Add new "source" macro instruction; compile-rtl emits it.
...
* module/system/vm/assembler.scm (<asm>): Add "sources" field.
(make-assembler): Adapt to make-asm change.
(source): New macro assembler.
* module/language/cps/compile-rtl.scm (emit-rtl-sequence):
(compile-fun): Emit source instructions as appropriate.
2013-09-30 21:48:07 +02:00
Andy Wingo
8ac8e2dfeb
Add contification pass
...
* module/Makefile.am:
* module/language/cps/contification.scm: New pass.
* module/language/cps/compile-rtl.scm (optimize): Wire it into the
compiler.
2013-08-31 09:40:56 +02:00
Andy Wingo
6e8ad82335
Add CPS -> RTL compiler
...
* module/Makefile.am:
* module/language/cps/compile-rtl.scm:
* module/language/cps/dfg.scm:
* module/language/cps/slot-allocation.scm: New modules.
* module/language/cps/spec.scm: Register the compiler.
* test-suite/Makefile.am:
* test-suite/tests/rtl-compilation.test: Add tests.
2013-08-31 09:40:56 +02:00