This reverts rP24167. That diff had two issues:
- It modifies the JS objects, which means subsequent serialization in quicksave are 'dirty'.
- It doesn't work with non-extensible objects. That's rather annoying, and has already caused problems.
It also revert rP24466, which was caused by the second issue.
This reverts to a SM structure, a GCHashTable, that's well supported according to SM devs. It seems to work fine.