mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-05-01 12:20:26 +02:00
* libguile/control.h: * libguile/control.c (scm_c_make_prompt): Take an extra arg, a cookie. Continuations will be rewindable only if the abort has the same cookie as the prompt. (scm_at_abort): Redefine from scm_abort, and instead of taking rest args, take the abort values as a list directly. Also, don't allow rewinding, because we won't support rewinding the C stack with delimited continuations. * libguile/eval.c (eval): Adapt to scm_c_make_prompt change. * libguile/vm-engine.c (vm_engine): Use vp->cookie to get a unique value corresponding to this VM invocation. * libguile/vm-i-system.c (prompt): Pass the cookie to scm_c_make_prompt. (abort): Take an additional tail arg. * libguile/vm.c (vm_abort): Parse out the abort tail arg. This is for the @abort case, or the (apply abort ...) case. (make_vm): Initialize the cookie to 0. * libguile/vm.h (struct scm_vm): Add cookie. * module/ice-9/boot-9.scm (abort): Define here as a trampoline to @abort. Needed to make sure that a call to abort dispatches to a VM opcode, so the cookie will be the same. * module/language/tree-il.scm (<tree-il>): Add a "tail" field to <abort>, for the (apply abort ...) case, or (@abort tag args). Should be #<const ()> in the normal case. Add support throughout. * module/language/tree-il/analyze.scm (analyze-lexicals): Add abort-tail support here too. * module/language/tree-il/compile-glil.scm (flatten): Compile the tail argument appropriately. * module/language/tree-il/primitives.scm (*primitive-expand-table*): Fix @abort and abort cases to pass the tail arg to make-abort. |
||
---|---|---|
.. | ||
debugger | ||
debugging | ||
and-let-star.scm | ||
arrays.scm | ||
boot-9.scm | ||
buffered-input.scm | ||
calling.scm | ||
ChangeLog-2008 | ||
channel.scm | ||
common-list.scm | ||
compile-psyntax.scm | ||
control.scm | ||
debug.scm | ||
debugger.scm | ||
deprecated.scm | ||
documentation.scm | ||
emacs.scm | ||
eval.scm | ||
expect.scm | ||
format.scm | ||
ftw.scm | ||
gap-buffer.scm | ||
gds-client.scm | ||
gds-server.scm | ||
getopt-long.scm | ||
hcons.scm | ||
history.scm | ||
i18n.scm | ||
lineio.scm | ||
list.scm | ||
ls.scm | ||
mapping.scm | ||
match.scm | ||
networking.scm | ||
null.scm | ||
occam-channel.scm | ||
optargs.scm | ||
poe.scm | ||
popen.scm | ||
posix.scm | ||
pretty-print.scm | ||
psyntax-pp.scm | ||
psyntax.scm | ||
q.scm | ||
quasisyntax.scm | ||
r4rs.scm | ||
r5rs.scm | ||
rdelim.scm | ||
README | ||
receive.scm | ||
regex.scm | ||
runq.scm | ||
rw.scm | ||
safe-r5rs.scm | ||
safe.scm | ||
serialize.scm | ||
session.scm | ||
slib.scm | ||
stack-catch.scm | ||
streams.scm | ||
string-fun.scm | ||
syncase.scm | ||
test.scm | ||
threads.scm | ||
time.scm | ||
vlist.scm | ||
weak-vector.scm |
This directory contains various bits of Guile Scheme code. Most of these are packaged as modules, with foo.scm implementing the module `(ice-9 foo)'. The non-module files are: boot-9.scm -- loaded on guile startup implements module system + lots of other stuff arrays.scm -- loaded by boot-9.scm networking.scm -- loaded by boot-9.scm posix.scm -- loaded by boot-9.scm r4rs.scm -- loaded by boot-9.scm