avoid tls gets when handling interrupts in the vm
authorAndy Wingo <wingo@pobox.com>
Thu, 5 May 2011 22:17:35 +0000 (00:17 +0200)
committerAndy Wingo <wingo@pobox.com>
Thu, 5 May 2011 22:17:35 +0000 (00:17 +0200)
commita2a6c0e319b5c146c484cb1fe8ffc9b14b9a9876
treedaec4c1b9cc5f45b0fe6d3330db1657143bff86a
parenta2230b653b86cece1daab09315873b5a4c592d6b
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/__scm.h
libguile/vm-engine.c
libguile/vm-engine.h
libguile/vm-i-system.c