1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-05-01 12:20:26 +02:00
guile/module/ice-9
Andy Wingo 2d026f04cc abort always dispatches to VM bytecode, to detect same-invocation aborts
* 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.
2010-02-22 21:54:06 +01:00
..
debugger local-eval will go away 2009-12-01 21:00:26 +01:00
debugging clean up macros.[ch] 2010-01-05 15:33:46 +01:00
and-let-star.scm Change Guile license to LGPLv3+ 2009-06-17 00:22:09 +01:00
arrays.scm Change Guile license to LGPLv3+ 2009-06-17 00:22:09 +01:00
boot-9.scm abort always dispatches to VM bytecode, to detect same-invocation aborts 2010-02-22 21:54:06 +01:00
buffered-input.scm Change Guile license to LGPLv3+ 2009-06-17 00:22:09 +01:00
calling.scm Change Guile license to LGPLv3+ 2009-06-17 00:22:09 +01:00
ChangeLog-2008 move ice-9/ and oop/ under module/ 2008-11-01 12:44:21 +01:00
channel.scm Fix typos leading to wrong argument counts. 2009-11-07 19:24:49 +01:00
common-list.scm Change Guile license to LGPLv3+ 2009-06-17 00:22:09 +01:00
compile-psyntax.scm pretty-print psyntax-pp.scm 2009-06-08 22:44:01 +02:00
control.scm prompt as part of guile's primitive language 2010-02-19 22:44:24 +01:00
debug.scm Change Guile license to LGPLv3+ 2009-06-17 00:22:09 +01:00
debugger.scm Incorporate ice-9-debugger-extensions properly 2009-08-27 22:21:20 +01:00
deprecated.scm Move feature?' to deprecated.scm'. 2010-01-11 01:21:14 +01:00
documentation.scm eval.c closures are now applicable smobs, not tc3s 2009-12-04 19:20:11 +01:00
emacs.scm local-eval will go away 2009-12-01 21:00:26 +01:00
eval.scm prompt as part of guile's primitive language 2010-02-19 22:44:24 +01:00
expect.scm Change Guile license to LGPLv3+ 2009-06-17 00:22:09 +01:00
format.scm ~:@y allows for truncation to an absolute maximum width 2009-12-29 21:15:08 +01:00
ftw.scm "filesystem" -> "file system" 2009-11-24 23:16:08 +01:00
gap-buffer.scm Change Guile license to LGPLv3+ 2009-06-17 00:22:09 +01:00
gds-client.scm local-eval will go away 2009-12-01 21:00:26 +01:00
gds-server.scm Merge branch 'ossau-gds-dev' 2009-08-27 22:52:20 +01:00
getopt-long.scm Change Guile license to LGPLv3+ 2009-06-17 00:22:09 +01:00
hcons.scm Change Guile license to LGPLv3+ 2009-06-17 00:22:09 +01:00
history.scm Change Guile license to LGPLv3+ 2009-06-17 00:22:09 +01:00
i18n.scm Provide Guile-friendly `coding:' meta-data. 2010-01-11 01:21:13 +01:00
lineio.scm remove (ice-9 lineio)'s dependency on (ice-9 readline) 2009-08-18 17:52:46 +02:00
list.scm Change Guile license to LGPLv3+ 2009-06-17 00:22:09 +01:00
ls.scm Change Guile license to LGPLv3+ 2009-06-17 00:22:09 +01:00
mapping.scm Change Guile license to LGPLv3+ 2009-06-17 00:22:09 +01:00
match.scm Change Guile license to LGPLv3+ 2009-06-17 00:22:09 +01:00
networking.scm Add `getaddrinfo' and related procedures. 2010-02-14 20:56:47 +01:00
null.scm Change Guile license to LGPLv3+ 2009-06-17 00:22:09 +01:00
occam-channel.scm Change Guile license to LGPLv3+ 2009-06-17 00:22:09 +01:00
optargs.scm allow simple value definitions with define*-public 2010-01-12 20:15:36 +01:00
poe.scm Change Guile license to LGPLv3+ 2009-06-17 00:22:09 +01:00
popen.scm Change Guile license to LGPLv3+ 2009-06-17 00:22:09 +01:00
posix.scm nanosecond timestamp support in stat and utime 2010-01-17 16:56:34 +01:00
pretty-print.scm Use HORIZONTAL ELLIPSIS' when available in truncated-print'. 2010-01-08 10:57:32 +01:00
psyntax-pp.scm re-expand psyntax-pp 2010-02-19 12:10:11 +01:00
psyntax.scm psyntax support for with-fluids 2010-02-18 22:46:31 +01:00
q.scm Change Guile license to LGPLv3+ 2009-06-17 00:22:09 +01:00
quasisyntax.scm add quasisyntax 2009-11-14 17:25:12 +01:00
r4rs.scm dynwind is now a part of guile's primitive language 2010-02-18 22:12:55 +01:00
r5rs.scm Change Guile license to LGPLv3+ 2009-06-17 00:22:09 +01:00
rdelim.scm Change Guile license to LGPLv3+ 2009-06-17 00:22:09 +01:00
README move ice-9/ and oop/ under module/ 2008-11-01 12:44:21 +01:00
receive.scm Change Guile license to LGPLv3+ 2009-06-17 00:22:09 +01:00
regex.scm Change Guile license to LGPLv3+ 2009-06-17 00:22:09 +01:00
runq.scm Remove unused top-level variables. 2010-01-11 01:21:14 +01:00
rw.scm Change Guile license to LGPLv3+ 2009-06-17 00:22:09 +01:00
safe-r5rs.scm Change Guile license to LGPLv3+ 2009-06-17 00:22:09 +01:00
safe.scm Change Guile license to LGPLv3+ 2009-06-17 00:22:09 +01:00
serialize.scm Change Guile license to LGPLv3+ 2009-06-17 00:22:09 +01:00
session.scm fix texinfo reflection for procedures 2010-01-12 22:50:10 +01:00
slib.scm Change Guile license to LGPLv3+ 2009-06-17 00:22:09 +01:00
stack-catch.scm Change Guile license to LGPLv3+ 2009-06-17 00:22:09 +01:00
streams.scm Change Guile license to LGPLv3+ 2009-06-17 00:22:09 +01:00
string-fun.scm Change Guile license to LGPLv3+ 2009-06-17 00:22:09 +01:00
syncase.scm 1.8 compat in ice-9 syncase 2010-01-14 00:40:20 +01:00
test.scm Change Guile license to LGPLv3+ 2009-06-17 00:22:09 +01:00
threads.scm Change Guile license to LGPLv3+ 2009-06-17 00:22:09 +01:00
time.scm Change Guile license to LGPLv3+ 2009-06-17 00:22:09 +01:00
vlist.scm vlist: Slightly improve readability and consistency. 2010-02-10 00:40:01 +01:00
weak-vector.scm Change Guile license to LGPLv3+ 2009-06-17 00:22:09 +01:00

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