зеркало из https://github.com/mozilla/gecko-dev.git
Bug 735550 - unmark gray objects held by live nsXBLDocGlobalObjects. r=smaug
This commit is contained in:
Родитель
296dd12f86
Коммит
071b58d7ff
|
@ -97,6 +97,8 @@ public:
|
||||||
|
|
||||||
void ClearGlobalObjectOwner();
|
void ClearGlobalObjectOwner();
|
||||||
|
|
||||||
|
void UnmarkScriptContext();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual ~nsXBLDocGlobalObject();
|
virtual ~nsXBLDocGlobalObject();
|
||||||
|
|
||||||
|
@ -360,6 +362,14 @@ nsXBLDocGlobalObject::ClearGlobalObjectOwner()
|
||||||
mGlobalObjectOwner = nsnull;
|
mGlobalObjectOwner = nsnull;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
nsXBLDocGlobalObject::UnmarkScriptContext()
|
||||||
|
{
|
||||||
|
if (mScriptContext) {
|
||||||
|
xpc_UnmarkGrayObject(mScriptContext->GetNativeGlobal());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
JSObject *
|
JSObject *
|
||||||
nsXBLDocGlobalObject::GetGlobalJSObject()
|
nsXBLDocGlobalObject::GetGlobalJSObject()
|
||||||
{
|
{
|
||||||
|
@ -509,9 +519,13 @@ nsXBLDocumentInfo::MarkInCCGeneration(PRUint32 aGeneration)
|
||||||
if (mDocument) {
|
if (mDocument) {
|
||||||
mDocument->MarkUncollectableForCCGeneration(aGeneration);
|
mDocument->MarkUncollectableForCCGeneration(aGeneration);
|
||||||
}
|
}
|
||||||
|
// Unmark any JS we hold
|
||||||
if (mBindingTable) {
|
if (mBindingTable) {
|
||||||
mBindingTable->Enumerate(UnmarkProtos, nsnull);
|
mBindingTable->Enumerate(UnmarkProtos, nsnull);
|
||||||
}
|
}
|
||||||
|
if (mGlobalObject) {
|
||||||
|
mGlobalObject->UnmarkScriptContext();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(nsXBLDocumentInfo)
|
NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(nsXBLDocumentInfo)
|
||||||
|
|
Загрузка…
Ссылка в новой задаче