diff options
author | Andy Wingo <wingo@pobox.com> | 2009-12-11 11:17:03 +0100 |
---|---|---|
committer | Andy Wingo <wingo@pobox.com> | 2009-12-11 11:17:03 +0100 |
commit | 5b09b37f81e014433061cec869d8310547dfaadd (patch) | |
tree | 26a4413e3b649b109e021dbaccabe2fc015133b2 /libguile/vm-i-system.c | |
parent | e8c377721438ea072ef211a940cd067db52bcb94 (diff) | |
download | guile-5b09b37f81e014433061cec869d8310547dfaadd.tar.gz |
vm: handle interrupts on backwards jumps
* libguile/vm-i-system.c (BR, br): Handle interrupts on backwards jumps,
so we can Ctrl-C an endless loop.
Diffstat (limited to 'libguile/vm-i-system.c')
-rw-r--r-- | libguile/vm-i-system.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/libguile/vm-i-system.c b/libguile/vm-i-system.c index 8eaf59cb6..41874fae3 100644 --- a/libguile/vm-i-system.c +++ b/libguile/vm-i-system.c @@ -466,6 +466,8 @@ VM_DEFINE_INSTRUCTION (34, long_toplevel_set, "long-toplevel-set", 2, 1, 0) FETCH_OFFSET (offset); \ if (p) \ ip += offset; \ + if (offset < 0) \ + VM_HANDLE_INTERRUPTS; \ NULLSTACK (1); \ DROP (); \ NEXT; \ @@ -476,6 +478,8 @@ VM_DEFINE_INSTRUCTION (35, br, "br", 3, 0, 0) scm_t_int32 offset; FETCH_OFFSET (offset); ip += offset; + if (offset < 0) + VM_HANDLE_INTERRUPTS; NEXT; } |