From a2a6c0e319b5c146c484cb1fe8ffc9b14b9a9876 Mon Sep 17 00:00:00 2001 From: Andy Wingo Date: Fri, 6 May 2011 00:17:35 +0200 Subject: avoid tls gets when handling interrupts in the vm * libguile/__scm.h (SCM_ASYNC_TICK_WITH_CODE): Redefine to take a scm_i_thread* as well. OK to do because it's within a BUILDING_LIBGUILE block. * libguile/vm-engine.c (vm_engine): Cache the scm_i_thread* instead of the dynstate, so we can use the thread for ticks. * libguile/vm-engine.h (VM_HANDLE_INTERRUPTS): Tick with the scm_i_thread* local var, to avoid excessive tls calls. * libguile/vm-i-system.c: Fix dynstate users to use current_thread->dynamic_state. --- libguile/vm-engine.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'libguile/vm-engine.h') diff --git a/libguile/vm-engine.h b/libguile/vm-engine.h index abbc11077..146931eb6 100644 --- a/libguile/vm-engine.h +++ b/libguile/vm-engine.h @@ -244,7 +244,7 @@ RUN_HOOK (SCM_VM_RESTORE_CONTINUATION_HOOK) #define VM_HANDLE_INTERRUPTS \ - SCM_ASYNC_TICK_WITH_CODE (SYNC_REGISTER ()) + SCM_ASYNC_TICK_WITH_CODE (current_thread, SYNC_REGISTER ()) /* -- cgit v1.2.3