Hi all, I recently had another look at redoing Guile's tagging system. The goal was to make it easier to generate native code, and clean up some nasty things that were vestiges of the old GC. I was thinking that you could tag the SCM values directly, for pairs and structs, instead of requiring that tc3 bits be on the heap as well.
That all worked out, and is in the wip-retagging branch. It works fine, except for some issue with guardians that I didn't figure out (nor spend time on). I didn't test smob finalization either. I'm not sure if it works or not, because the GC just sees naked pointers, so if a pointer comes back to Guile after coming through the GC, then it won't have those extra tag bits that are associated with the pointer and not the memory. Dunno what to do about that. Anyway, I merged the bits that were just cleanups to master, and left the actual retagging on a branch. Review appreciated. Andy -- http://wingolog.org/