diff options
author | Andy Wingo <wingo@pobox.com> | 2009-12-11 11:15:12 +0100 |
---|---|---|
committer | Andy Wingo <wingo@pobox.com> | 2009-12-11 11:15:12 +0100 |
commit | e8c377721438ea072ef211a940cd067db52bcb94 (patch) | |
tree | b114aea92a7477818f85b04dd4b9042f5515cfc1 /libguile/vm-engine.h | |
parent | aa3819aa343b0ba39b3e6ca4fbf90f15a8e36cdf (diff) | |
download | guile-e8c377721438ea072ef211a940cd067db52bcb94.tar.gz |
less overhead for handling interrupts in the vm
* libguile/__scm.h (SCM_ASYNC_TICK): Add some branch prediction.
(SCM_ASYNC_TICK_WITH_CODE): New helper for when BUILDING_LIBGUILE,
runs code only if we're going to call async_click().
* libguile/vm-engine.h (VM_HANDLE_INTERRUPTS): New helper, uses
SCM_ASYNC_TICK_WITH_CODE to only save regs if we'll handle an
interrupt.
* libguile/vm-i-system.c (call, goto/args, return): use
VM_HANDLE_INTERRUPTS.
Diffstat (limited to 'libguile/vm-engine.h')
-rw-r--r-- | libguile/vm-engine.h | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/libguile/vm-engine.h b/libguile/vm-engine.h index ebe40b2d1..838ed202e 100644 --- a/libguile/vm-engine.h +++ b/libguile/vm-engine.h @@ -228,6 +228,9 @@ #define EXIT_HOOK() RUN_HOOK (SCM_VM_EXIT_HOOK) #define RETURN_HOOK() RUN_HOOK (SCM_VM_RETURN_HOOK) +#define VM_HANDLE_INTERRUPTS \ + SCM_ASYNC_TICK_WITH_CODE (SYNC_REGISTER ()) + /* * Stack operation |