2 ms·
Yeah, I know that trick. I implemented an identity hashmap[1] inside of V8 that uses that, because JS objects don't have an identity hash code[2]. It uses the o
by titzer 5y ago
Yeah, I know that trick. I implemented an identity hashmap[1] inside of V8 that uses that, because JS objects don't have an identity hash code[2]. It uses the object address as the basis of the hash code, which means the table needs to be reorganized when the GC moves objects, which is done with a post-GC hook. The identity maps in V8 are generally short-lived.
I am not aware of production JVMs that use this, because in the worst case they can use a lot more memory if a lot of objects end up needing hashcodes.
[1] https://github.com/v8/v8/blob/dc712da548c7fb433caed56af9a021d964952728/src/utils/identity-map.h https://github.com/v8/v8/blob/dc712da548c7fb433caed56af9a021...
[2] I guess they might have an invisible one now; I haven't looked at the implementation of WeakHashMap/Set.