// Check JS::ubi::Node::size results for symbols. // We actually hard-code specific sizes into this test, even though they're // implementation details, because in practice there are only two architecture // variants to consider (32-bit and 64-bit), and if these sizes change, that's // something SpiderMonkey hackers really want to know; they're supposed to be // stable. // Run this test only if we're using jemalloc. Other malloc implementations // exhibit surprising behaviors. For example, 32-bit Fedora builds have // non-deterministic allocation sizes. var config = getBuildConfiguration(); if (!config['moz-memory']) quit(0); const SIZE_OF_SYMBOL = config['pointer-byte-size'] == 4 ? 16 : 24; // Without a description. assertEq(byteSize(Symbol()), SIZE_OF_SYMBOL); // With a description. assertEq(byteSize(Symbol("This is a relatively long description to be passed to " + "Symbol() but it doesn't matter because it just gets " + "interned as a JSAtom* anyways.")), SIZE_OF_SYMBOL);