>>28That's the wrong reading. What CCAN's htable does is sniff out what bits in hashtable entries are the same, and then stores hash-value bits in them instead. This exploits the fact that those entries tend to have been allocated near one another in the heap, with the advantage that lookup can limit comparisons by checking the stored hash bits against the key's hash value.
So, it exploits C's property of being able to convert a data pointer into an uintptr_t, and then not just that literal value but any that look like it exactly, back to the same data pointer. This makes a O(1) pointer synthesis difficult for implementations where wordsize < ptrsize, in turn inconveniencing translation into any language where pointer-to-integer-to-pointer casting isn't allowed by the target language's specification.
Hope this is clear enough.