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(); return p->value();
} }
JSObject*
IdToObjectMap::findPreserveColor(ObjectId id)
{
Table::Ptr p = table_.lookup(id);
if (!p)
return nullptr;
return p->value().unbarrieredGet();
}
bool bool
IdToObjectMap::add(ObjectId id, JSObject* obj) IdToObjectMap::add(ObjectId id, JSObject* obj)
{ {

View file

@ -96,6 +96,7 @@ class IdToObjectMap
bool add(ObjectId id, JSObject* obj); bool add(ObjectId id, JSObject* obj);
JSObject* find(ObjectId id); JSObject* find(ObjectId id);
JSObject* findPreserveColor(ObjectId id);
void remove(ObjectId id); void remove(ObjectId id);
void clear(); void clear();

View file

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