mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-10-29 10:37:33 +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();
|
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)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -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();
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue