>>24How do you feel about cdr coding and GC-time list compaction?
As I said, I'm not against lists as an
abstraction so long as the compiler (or library maintainer) can mitigate the costs with a sensible representation. I would prefer unrolled lists, of which CDR-coding is a specialization, in a way, and there are environments in which the latter makes more sense. For example, if you're already committed to working with tagged pointers, or if the list structure has to be mutated often (ugh). CDR-coding's small additional cost in CPU instructions is certainly preferable to cache misses, if it ever comes to that. There are architectures on which it's downright negligible.
GC-time list compaction is something I admit I've never heard of and can't seem to google right now. From the name it sounds like it would only work with memory models that run on handles instead of direct pointers. Could you tell me more about it, and perhaps point out some implementations?