Simplify dynstack API to only wind one fluid at a time
authorAndy Wingo <wingo@pobox.com>
Fri, 28 Jun 2013 18:01:35 +0000 (20:01 +0200)
committerAndy Wingo <wingo@pobox.com>
Fri, 28 Jun 2013 18:01:35 +0000 (20:01 +0200)
commit98eaef1b50db626c672646da58645c62407d0c1a
tree814a737a115dff5f6c5230b3b27d51c140d6b7ac
parentc32b7c4cef1c63a677a1c447a0386e90ab2ecd42
Simplify dynstack API to only wind one fluid at a time

* libguile/dynstack.h (SCM_DYNSTACK_TYPE_WITH_FLUID): Rename from
  with-fluids.
* libguile/dynstack.c (scm_dynstack_push_fluid):
  (scm_dynstack_unwind_fluid): Change API to only wind/unwind one
  fluid binding.
  (WITH_FLUID_WORDS): New define, always 2 words (fluid and value box).
  (WITH_FLUID_FLUID, WITH_FLUID_VALUE_BOX): New macros to get offsets of
  fluid and value box.
  (scm_dynstack_push_rewinder, scm_dynstack_push_unwinder): Use
  WINDER_WORDS.
  (scm_dynstack_push_dynwind): Use DYNWIND_WORDS.
  (scm_dynstack_wind_1): Update for scm_swap_fluid API change.

* libguile/fluids.h:
* libguile/fluids.c (scm_prepare_fluids): Remove; no longer needed.
  (scm_swap_fluid): Update to just swap one fluid binding.
  (scm_c_with_fluids, scm_c_with_fluid): Update to use
  scm_dynstack_push_fluid.

* libguile/memoize.c (do_push_fluid, do_pop_fluid): Adapt to API
  change.
* libguile/vm-engine.c (rtl_vm_engine): Change wind-fluids / unwind-fluids
  to push-fluid / pop-fluid, and actually enable.  Woo!

* libguile/vm-i-system.c (push-fluid, pop-fluid): Update to new API.
libguile/dynstack.c
libguile/dynstack.h
libguile/fluids.c
libguile/fluids.h
libguile/memoize.c
libguile/vm-engine.c
libguile/vm-i-system.c