Fix Value::isGCThing footgun, stop returning true for NullValue

This commit is contained in:
trav90 2018-04-07 12:24:30 -05:00 • committed by Roy Tam
commit 10b24b8110
31 changed files with 87 additions and 103 deletions

View file

@ -2686,7 +2686,7 @@ public:
void* aClosure) const override
{
const JS::Value& val = aValue->unbarrieredGet();
if (val.isMarkable() && ValueIsGrayCCThing(val)) {
if (val.isGCThing() && ValueIsGrayCCThing(val)) {
MOZ_ASSERT(!js::gc::IsInsideNursery(val.toGCThing()));
mCollector->GetJSPurpleBuffer()->mValues.InfallibleAppend(val);
}

View file

@ -36,7 +36,7 @@ void
TraceCallbackFunc::Trace(JS::Heap<JS::Value>* aPtr, const char* aName,
void* aClosure) const
{
if (aPtr->unbarrieredGet().isMarkable()) {
if (aPtr->unbarrieredGet().isGCThing()) {
mCallback(JS::GCCellPtr(aPtr->unbarrieredGet()), aName, aClosure);
}
}