Created attachment 620172[details][diff][review]
Patch
GC heap internals are spread across jsgc.h and jscell.h right now, and it's easy to get warnings if things don't match up just so (he said, with the voice of experience). Move all this stuff into a single header (with minimized dependencies) with declarations and definitions properly interspersed to not produce build warnings. (The patch depends on bug 750907's patch.)
This is purely code motion; no semantic changes were made. Not that it'd be possible to see that, of course, in this mess of motion...
We could minimize dependencies even further with a little effort. Using slightly different macros and moving JS_BITS_PER_WORD into mfbt would let us get rid of the jstypes.h dependency. Using mfbt assertions would let us get rid of the jsutil.h dependency. Both ideas either require enough effort -- getting JS_BITS_PER_WORD upstreamed, or providing meaningful explanations for the static assertions -- that I'm going to punt them to later.