1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-06-24 12:20:20 +02:00

Allow callk to continue to kargs

* module/language/cps/verify.scm (check-arities): If a callk continues
to kargs, the caller knows the number of return values that the callee
provides and no number-of-values check is needed.
* module/language/cps/contification.scm (apply-contification): Allow
contification of known-return-values calls.
* module/language/cps/reify-primitives.scm (uniquify-receive)
(reify-primitives): No need for uniquify-receive any more as receive
shuffles are attached to the call, not the continuation.
* module/language/cps/compile-bytecode.scm (compile-function): Add kargs
case.
This commit is contained in:
Andy Wingo 2021-11-15 10:39:04 +01:00
parent 4fcd643adb
commit 5c76381625
5 changed files with 23 additions and 30 deletions

View file

@ -135,6 +135,8 @@
(emit-fmov asm dst src)
(lp moves reset-frame?)))))))
(match cont
(($ $kargs)
(shuffle-results))
(($ $kreceive ($ $arity req () rest () #f) kargs)
(let ((nreq (length req))
(rest-var (and rest