Improve dead compartment collection js/ipc

This commit is contained in:
win7-7 2019-04-29 12:08:50 +03:00 committed by Roy Tam
commit acf2827e3c
3 changed files with 14 additions and 4 deletions

View file

@ -61,6 +61,15 @@ IdToObjectMap::find(ObjectId id)
return p->value();
}
JSObject*
IdToObjectMap::findPreserveColor(ObjectId id)
{
Table::Ptr p = table_.lookup(id);
if (!p)
return nullptr;
return p->value().unbarrieredGet();
}
bool
IdToObjectMap::add(ObjectId id, JSObject* obj)
{
@ -757,4 +766,4 @@ CPOWManager*
mozilla::jsipc::CPOWManagerFor(PJavaScriptChild* aChild)
{
return static_cast<JavaScriptChild*>(aChild);
}
}

View file

@ -96,6 +96,7 @@ class IdToObjectMap
bool add(ObjectId id, JSObject* obj);
JSObject* find(ObjectId id);
JSObject* findPreserveColor(ObjectId id);
void remove(ObjectId id);
void clear();
@ -233,4 +234,4 @@ class JavaScriptShared : public CPOWManager
} // namespace jsipc
} // namespace mozilla
#endif
#endif

View file

@ -789,10 +789,10 @@ WrapperAnswer::RecvDOMInstanceOf(const ObjectId& objId, const int& prototypeID,
bool
WrapperAnswer::RecvDropObject(const ObjectId& objId)
{
JSObject* obj = objects_.find(objId);
JSObject* obj = objects_.findPreserveColor(objId);
if (obj) {
objectIdMap(objId.hasXrayWaiver()).remove(obj);
objects_.remove(objId);
}
return true;
}
}