From 5b09b37f81e014433061cec869d8310547dfaadd Mon Sep 17 00:00:00 2001 From: Andy Wingo Date: Fri, 11 Dec 2009 11:17:03 +0100 Subject: [PATCH] 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. --- libguile/vm-i-system.c | 4 ++++ 1 file changed, 4 insertions(+) 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; }