Fixed the weak cell implementation (for weak hash tables).
authorLudovic Courtes <ludovic.courtes@laas.fr>
Sun, 9 Apr 2006 16:13:01 +0000 (16:13 +0000)
committerLudovic Courtès <ludo@gnu.org>
Thu, 4 Sep 2008 22:46:58 +0000 (00:46 +0200)
commite4d21e6bc92e78fa8c89559ec38cd5a106b4101e
tree1d66ad9f51afb9501a95d578c6d987c8f400d7ae
parent3a2de079d507b612fb7ada1a957ea539bea29fc5
Fixed the weak cell implementation (for weak hash tables).

* libguile/hashtab.c (wcar_cell_descr): New.
  (wcdr_cell_descr): New.
  (scm_weak_car_cell): Use `GC_malloc_explicitly_typed ()' instead of
  `scm_gc_malloc_pointerless ()'.
  (scm_weak_cdr_cell): Likewise.
  (SCM_WEAK_CELL_WORD_DELETED_P): Use `SCM_CELL_OBJECT' instead of
  `SCM_CELL_WORD'.
  (scm_hash_fn_get_handle): Call `GC_disable ()' before calling
  `scm_fixup_weak_alist ()' and `GC_enable ()' afterwards.
  (scm_hash_fn_create_handle_x): Likewise.
  (scm_hash_fn_remove_x): Likewise.
  (scm_hashtab_prehistory): Initialize WCAR_CELL_DESCR and
  WCDR_CELL_DESCR.

git-archimport-id: lcourtes@laas.fr--2005-libre/guile-core--boehm-gc--1.9--patch-8
libguile/hashtab.c