Another subtler property that the cycle collector needs is "canonical form" for pointers: every pointer to an object that is passed in to the cycle collector must be bit-for-bit equal. For XPCOM objects, due to inheritance this is not automatically true, so the CC uses a hacked up QI thing to get a canonical pointer. For "Native" and JS CCed objects, the pointers just have to have this property always.
Bug 1548685 Comment 1 Edit History
Note: The actual edited comment in the bug view page will always show the original commenter’s name and original timestamp.
Another subtler property that the cycle collector needs is a "canonical form" for pointers: every pointer to an object that is passed in to the cycle collector must be bit-for-bit equal. For XPCOM objects, due to inheritance this is not automatically true, so the CC uses a hacked up QI thing to get a canonical pointer. For "Native" and JS CCed objects, the pointers just have to have this property always.