Notion of Hash-Consing
Notion of not specific to compilers
- and need not be used in compilers
A generalization of idea of replacing strings with symbols
- ensure we can use pointer equality instead of structural equality
- avoid constructing duplicate objects that are equal
- only works for immutable trees
Trivially, if pointers equal, then so is structure
Ensuring converse (if structure equal, so are pointers):
- replace constructor with 'hashing constructor'
- constructor maps compound object to its components
- with hash consing, we maintain a mapping from components to compound object
- if such object already created, we return same address