mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-09-08 08:48:39 +09:00
Improve dead compartment collection js/ipc
This commit is contained in:
parent
68a36fe36f
commit
acf2827e3c
3 changed files with 14 additions and 4 deletions
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
@ -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
|
||||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue