summaryrefslogtreecommitdiff
path: root/libguile/vm-i-system.c
diff options
context:
space:
mode:
authorAndy Wingo <wingo@pobox.com>2010-01-31 13:02:39 +0100
committerAndy Wingo <wingo@pobox.com>2010-02-26 11:56:17 +0100
commit416f26c7534a018c59f1c8d888dc9153f42d86d1 (patch)
tree4cb79856545f9dbe64c83e306cee4e0dec760cc7 /libguile/vm-i-system.c
parente10cf6b9c7e54c79db4de74584f1b0b65847d4fc (diff)
downloadguile-416f26c7534a018c59f1c8d888dc9153f42d86d1.tar.gz
catch, throw, with-throw-handler implemented in Scheme
* libguile/throw.c (tc16_jmpbuffer, tc16_pre_unwind_data): Remove these smob types, and associated constructors and accessors (all internal). (scm_catch, scm_catch_with_pre_unwind_handler): (scm_with_throw_handler, scm_throw): Simply dispatch to scheme. Lovely. (tc16_catch_closure): Introduce a new applicable smob type, for use by the C catch interface. All constructors and accessors are internal. (scm_c_catch, scm_internal_catch, scm_c_with_throw_handler): Build applicable smobs out of the C procedure arguments, so we can then dispatch through scm_catch et al. (scm_ithrow): Dispatch to scm_throw. (pre_init_catch, pre_init_throw): Restricted catch/throw implementation for use before boot-9 runs. (scm_init_throw): Bind the pre-init catch and throw definitions. * module/ice-9/boot-9.scm (prompt, abort): Move these definitions up in the file. (catch, throw, with-throw-handler): Implement in Scheme. Whee!
Diffstat (limited to 'libguile/vm-i-system.c')
0 files changed, 0 insertions, 0 deletions