Skip to content
Snippets Groups Projects
Commit fee84b90 authored by Olli Pettay's avatar Olli Pettay
Browse files

Bug 725752 - BBP for XBL protos, f=mccr8,r=jst

parent 8acc9c25
No related branches found
No related tags found
No related merge requests found
......@@ -487,6 +487,33 @@ NS_IMPL_CYCLE_COLLECTION_TRACE_BEGIN(nsXBLDocumentInfo)
}
NS_IMPL_CYCLE_COLLECTION_TRACE_END
static void
UnmarkXBLJSObject(PRUint32 aLangID, void* aP, const char* aName, void* aClosure)
{
if (aLangID == nsIProgrammingLanguage::JAVASCRIPT) {
xpc_UnmarkGrayObject(static_cast<JSObject*>(aP));
}
}
static bool
UnmarkProtos(nsHashKey* aKey, void* aData, void* aClosure)
{
nsXBLPrototypeBinding* proto = static_cast<nsXBLPrototypeBinding*>(aData);
proto->Trace(UnmarkXBLJSObject, nsnull);
return kHashEnumerateNext;
}
void
nsXBLDocumentInfo::MarkInCCGeneration(PRUint32 aGeneration)
{
if (mDocument) {
mDocument->MarkUncollectableForCCGeneration(aGeneration);
}
if (mBindingTable) {
mBindingTable->Enumerate(UnmarkProtos, nsnull);
}
}
NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(nsXBLDocumentInfo)
NS_INTERFACE_MAP_ENTRY(nsIScriptGlobalObjectOwner)
NS_INTERFACE_MAP_ENTRY(nsISupportsWeakReference)
......
......@@ -82,12 +82,7 @@ public:
// nsIScriptGlobalObjectOwner methods
virtual nsIScriptGlobalObject* GetScriptGlobalObject();
void MarkInCCGeneration(PRUint32 aGeneration)
{
if (mDocument) {
mDocument->MarkUncollectableForCCGeneration(aGeneration);
}
}
void MarkInCCGeneration(PRUint32 aGeneration);
static nsresult ReadPrototypeBindings(nsIURI* aURI, nsXBLDocumentInfo** aDocInfo);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment