Value::isGCThing now does what you'd expect

Jan de Mooij <[email protected]> Tue, 27 Dec 2016 10:12:52 +0100
Newsgroups gmane.comp.mozilla.devel.jseng,gmane.comp.mozilla.devel.jseng.internals
Message-ID <CABTC+Jdk0OkEXVdxPb4ULn11xNejf-HtCn98tAN18_O8KyexRQ@mail.gmail.com>
Hey all,

I landed a JS::Value change that might affect some embedders. JS::Value
used to have the following methods:

* isMarkable(): returned true iff the Value was a GC thing (object, string,
symbol, private GC thing).
* isGCThing(): returned true if isMarkable() *or NullValue*.

Unsurprisingly, most callers of isGCThing actually wanted isMarkable (we
had some DOM code for instance where we took a slower path if isGCThing()
returned true).

Bug 1325075 [0] (in Firefox/SpiderMonkey 53) fixed this footgun. Now
there's just isGCThing and it returns true iff the Value is a GC thing. The
isMarkable and toMarkablePointer methods are gone.

Thanks,
Jan

[0] https://bugzilla.mozilla.org/show_bug.cgi?id=1325075