diff options
author | Andy Wingo <wingo@pobox.com> | 2011-05-06 00:17:35 +0200 |
---|---|---|
committer | Andy Wingo <wingo@pobox.com> | 2011-05-06 00:17:35 +0200 |
commit | a2a6c0e319b5c146c484cb1fe8ffc9b14b9a9876 (patch) | |
tree | daec4c1b9cc5f45b0fe6d3330db1657143bff86a /libguile/vm-engine.c | |
parent | a2230b653b86cece1daab09315873b5a4c592d6b (diff) | |
download | guile-a2a6c0e319b5c146c484cb1fe8ffc9b14b9a9876.tar.gz |
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.
Diffstat (limited to 'libguile/vm-engine.c')
-rw-r--r-- | libguile/vm-engine.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/libguile/vm-engine.c b/libguile/vm-engine.c index bfa848967..e449b4372 100644 --- a/libguile/vm-engine.c +++ b/libguile/vm-engine.c @@ -52,7 +52,7 @@ VM_NAME (SCM vm, SCM program, SCM *argv, int nargs) #endif SCM *stack_limit = vp->stack_limit; /* stack limit address */ - SCM dynstate = SCM_I_CURRENT_THREAD->dynamic_state; + scm_i_thread *current_thread = SCM_I_CURRENT_THREAD; scm_t_int64 vm_cookie = vp->cookie++; /* Internal variables */ |