optional default-value arg to make-fluid
authorAndy Wingo <wingo@pobox.com>
Wed, 23 Nov 2011 11:13:12 +0000 (12:13 +0100)
committerAndy Wingo <wingo@pobox.com>
Wed, 23 Nov 2011 11:53:38 +0000 (12:53 +0100)
commitaafb4ed72414dd0dccc6ff27a59318adfda26abf
treebb02ba84034611d66207c33d6a1ebf78db798721
parentadf8616fabbf3248cfbe4f075b5f2c02fed9e5c2
optional default-value arg to make-fluid

* libguile/fluids.c (grow_dynamic_state, new_fluid): Arrange for the
  default value in the dynamic-state vector to be SCM_UNDEFINED instead
  of SCM_BOOL_F.  If the value in the dynamic-state is #f, default to a
  value attached to the fluid instead.  This allows useful default
  values.
  (scm_make_fluid_with_default): New function, allows the user to
  specify a default value for the fluid.  Defaults to #f.  Bound to
  `make-fluid' on the Scheme side.
  (scm_make_unbound_fluid): Use SCM_UNDEFINED as the default in all
  threads.
  (scm_fluid_unset_x): Also unset the default value.  Not sure if this
  is the right thing.
  (fluid_ref): Update to the new default-value strategy.

* libguile/threads.c (scm_i_reset_fluid): Reset to SCM_UNDEFINED.
* libguile/threads.h: Remove extra arg to scm_i_reset_fluid.
* libguile/vm-i-system.c (fluid-ref): Update to new default-value
  strategy.

* module/ice-9/vlist.scm (block-growth-factor): Default to 2 in all
  threads.  Fixes http://debbugs.gnu.org/10093.
libguile/fluids.c
libguile/fluids.h
libguile/threads.c
libguile/threads.h
libguile/vm-i-system.c
module/ice-9/vlist.scm