I really don't think we need yet more switches, and we definitely don't
need more hashtables. We've already got one for identifiers, and we
should use it to its fullest, particularly as it's all we need here.
Why not attach 3 pointers to them like I suggest in another mail?
1) It uses less space (3 or 4 pointers less per identifier) than even
the *current* scheme
2) It has constant time (just a pointer-derefence) name lookup.
Actually, that's not quite true, the tag case actually is a linked-list
traversal, where length(list) is <= 1 99.99% of the time, and I
doubt code has ever been written where length(list) > 3).
3) We don't pile more kludges on top of others, which is becoming
a real problem in our front ends IMO.
4) It's a simplification and it's easy to understand.
It'll be more work to do since it implements the symbol table
differently to how we currently do, but I think it's a much better
way to go.
Neil.