fluids are tc7 objects
authorAndy Wingo <wingo@pobox.com>
Sat, 5 Dec 2009 09:52:18 +0000 (10:52 +0100)
committerAndy Wingo <wingo@pobox.com>
Sat, 5 Dec 2009 09:52:18 +0000 (10:52 +0100)
commit9ea31741dad29ae123e468a203b72df6d190f6e1
treebc1424d37a358b5f4fcfa756492134517ad07b32
parentc99de5aa275b15af207c0dba9717d6b865684fc4
fluids are tc7 objects

If you're wondering what I'm doing, I'm trying to eventually reimplement
smobs in terms of structs, so that applicable smobs can just follow the
applicable struct dispatch path. But to do that I have to get structs
initialized before things that use smobs, which means transforming a
bunch of smobby things to tc7 things. But this transformation is good
for performance anyway, and we currently have a glut of unused tc7s,
so here we go...

* libguile/tags.h (scm_tc7_fluid, scm_tc7_dynamic_state): Fluids (and
  dynamic states) now have tc7s.

* libguile/fluids.h: Remove scm_fluids_prehistory, and add internal
  scm_i_fluid_print. Update a comment.

* libguile/fluids.c: Update for tc7 representation. Also remove the next
  pointers while we're at it, as they aren't used in the new BDW GC.

* libguile/eq.c (scm_equal_p): Remove the hashtable case. Hashtables
  could never be equal? before, I don't see why to add stubs doing the
  same thing now.

* libguile/print.c (iprin1):
* libguile/gc.c (scm_i_tag_name):
* libguile/evalext.c (scm_self_evaluating_p): Add fluid and
  dynamic_state cases.

* libguile/goops.h: Remove scm_class_hashtable; it will be static.
* libguile/goops.c: Make <hashtable> static, and add <fluid> and
  <dynamic-state> classes.

* libguile/hashtab.h:
* libguile/hashtab.c: Remove scm_i_hashtable_equal_p.

* libguile/init.c (scm_i_init_guile): Remove call to fluids_prehistory.
12 files changed:
libguile/eq.c
libguile/evalext.c
libguile/fluids.c
libguile/fluids.h
libguile/gc.c
libguile/goops.c
libguile/goops.h
libguile/hashtab.c
libguile/hashtab.h
libguile/init.c
libguile/print.c
libguile/tags.h