Add VM and compiler support for calls to known procedures
authorAndy Wingo <wingo@pobox.com>
Sun, 2 Feb 2014 22:19:22 +0000 (23:19 +0100)
committerAndy Wingo <wingo@pobox.com>
Sun, 2 Feb 2014 22:19:22 +0000 (23:19 +0100)
commitb3ae2b5068cbfcb6e9eec7ff96cd936f1c861396
tree7335f265d952a8cc8f148b2305c3770c3dd00da8
parent0320b1fc3f22e4edda5f79e949e5fccda49b8680
Add VM and compiler support for calls to known procedures

* module/language/cps.scm ($callk): New expression type, for calls to
  known labels.  Part of "low CPS".
* module/language/cps/arities.scm:
* module/language/cps/closure-conversion.scm:
* module/language/cps/compile-bytecode.scm:
* module/language/cps/dce.scm:
* module/language/cps/dfg.scm:
* module/language/cps/effects-analysis.scm:
* module/language/cps/simplify.scm:
* module/language/cps/slot-allocation.scm:
* module/language/cps/verify.scm: Adapt call sites.

* libguile/vm-engine.c (call-label, tail-call-label): New instructions.
  Renumber the rest; this is an ABI change.

* libguile/_scm.h (SCM_OBJCODE_MINOR_VERSION):
* module/system/vm/assembler.scm (*bytecode-minor-version*): Bump.

* doc/ref/compiler.texi (CPS in Guile): Document $callk.
14 files changed:
doc/ref/compiler.texi
libguile/_scm.h
libguile/vm-engine.c
module/language/cps.scm
module/language/cps/arities.scm
module/language/cps/closure-conversion.scm
module/language/cps/compile-bytecode.scm
module/language/cps/dce.scm
module/language/cps/dfg.scm
module/language/cps/effects-analysis.scm
module/language/cps/simplify.scm
module/language/cps/slot-allocation.scm
module/language/cps/verify.scm
module/system/vm/assembler.scm