diff options
author | Andy Wingo <wingo@pobox.com> | 2009-02-04 00:09:38 +0100 |
---|---|---|
committer | Andy Wingo <wingo@pobox.com> | 2009-02-04 00:09:38 +0100 |
commit | 747a163532590459f2d2f83a405fd604d382c5ce (patch) | |
tree | 5a486abd0fee034c39c3e8a52c4d76658ec57ae0 /libguile/vm-i-system.c | |
parent | f775e51bceb7399893b01380c5b56a7b665b782a (diff) | |
download | guile-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.c | 1 |
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; } |