summaryrefslogtreecommitdiff
path: root/libguile/vm-i-system.c
diff options
context:
space:
mode:
authorAndy Wingo <wingo@pobox.com>2009-02-04 00:09:38 +0100
committerAndy Wingo <wingo@pobox.com>2009-02-04 00:09:38 +0100
commit747a163532590459f2d2f83a405fd604d382c5ce (patch)
tree5a486abd0fee034c39c3e8a52c4d76658ec57ae0 /libguile/vm-i-system.c
parentf775e51bceb7399893b01380c5b56a7b665b782a (diff)
downloadguile-747a163532590459f2d2f83a405fd604d382c5ce.tar.gz
make catch cache and restore vm regs, not the vm itself -- speedy speedy
* libguile/throw.c (scm_c_catch): Stash away the current vm's regs, and restore them if there's a nonlocal exit. There is a terrible case we have to handle if we catch from when the vm smob type isn't registered but the throw has the vm registered, but I think we handle this fine. * libguile/vm-engine.c (vm_run): * libguile/vm-i-system.c (halt): Don't make a dynwind context, so that entering the VM doesn't cons at all, except for the arg list. Maybe we can fix that bit too. * libguile/vm.c (vm_reset_stack): Remove, as there is no more dynwind. (make_vm): Return #f if the tc16 hasn't yet been registered.
Diffstat (limited to 'libguile/vm-i-system.c')
-rw-r--r--libguile/vm-i-system.c1
1 files changed, 0 insertions, 1 deletions
diff --git a/libguile/vm-i-system.c b/libguile/vm-i-system.c
index d677a41b3..1dfec4822 100644
--- a/libguile/vm-i-system.c
+++ b/libguile/vm-i-system.c
@@ -56,7 +56,6 @@ VM_DEFINE_INSTRUCTION (1, halt, "halt", 0, 0, 0)
NULLSTACK (stack_base - sp);
}
SYNC_ALL ();
- scm_dynwind_end ();
return ret;
}