summaryrefslogtreecommitdiff
path: root/libguile/vm-engine.h
diff options
context:
space:
mode:
authorAndy Wingo <wingo@pobox.com>2009-12-11 11:15:12 +0100
committerAndy Wingo <wingo@pobox.com>2009-12-11 11:15:12 +0100
commite8c377721438ea072ef211a940cd067db52bcb94 (patch)
treeb114aea92a7477818f85b04dd4b9042f5515cfc1 /libguile/vm-engine.h
parentaa3819aa343b0ba39b3e6ca4fbf90f15a8e36cdf (diff)
downloadguile-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.h3
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