1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-05-20 03:30:27 +02:00

rename tail-call to goto/args, add some more tail instructions

* libguile/vm-i-system.c (call): Rename continuation invocation from
  `vm_call_cc' to `vm_call_continuation', because that's what it really
  does. Add a note that it doesn't handle multiple values at the moment.
  (goto/arg): Renamed from tail-call, in deference to the progenitors, on
  Dale Smith's suggestion.
  (goto/apply): New instruction, for `apply' in a tail context. Not yet
  used, or vetted for that matter.
  (call/cc): No need to pop the program, I don't think; although this
  isn't tested either.
  (goto/cc): New instruction, for call/cc in a tail context.

* module/language/scheme/translate.scm (*forbidden-primitives*): Rename
  from %forbidden-primitives.

* module/system/il/compile.scm (codegen): Adapt to goto/args instead of
  tail-call.

* module/system/il/inline.scm: Start inlining some macros used in
  r4rs.scm -- not yet fully tested.

* ice-9/boot-9.scm: Allow load of a compiled r4rs file.
This commit is contained in:
Andy Wingo 2008-09-13 19:19:10 +02:00
parent da320011a3
commit f03c31dbad
6 changed files with 49 additions and 12 deletions

View file

@ -296,6 +296,7 @@
((<ghil-inline> env loc inline args)
;; ARGS...
;; (INST NARGS)
;; FIXME: translate between call and goto/args, etc
(push-call! loc inline args)
(maybe-drop)
(maybe-return))
@ -305,7 +306,7 @@
;; ARGS...
;; ([tail-]call NARGS)
(comp-push proc)
(push-call! loc (if tail 'tail-call 'call) args)
(push-call! loc (if tail 'goto/args 'call) args)
(maybe-drop))))
;;
;; main