Bug 616262 - Avoid cycle collection participant global variables adding static initializers. r=smaug,r=mccr8,r=Waldo

This commit is contained in:
Mike Hommey
2012-06-04 08:30:26 +02:00
parent 1ab431390a
commit f68112ab50
22 changed files with 404 additions and 247 deletions

View File

@@ -6,8 +6,9 @@
#include "nsCycleCollectionParticipant.h"
#include "nsCOMPtr.h"
static void
NoteChild(void *aScriptThing, const char *name, void *aClosure)
void
nsScriptObjectTracer::NoteJSChild(void *aScriptThing, const char *name,
void *aClosure)
{
nsCycleCollectionTraversalCallback *cb =
static_cast<nsCycleCollectionTraversalCallback*>(aClosure);
@@ -15,15 +16,8 @@ NoteChild(void *aScriptThing, const char *name, void *aClosure)
cb->NoteJSChild(aScriptThing);
}
void
nsScriptObjectTracer::TraverseScriptObjects(void *p,
nsCycleCollectionTraversalCallback &cb)
{
Trace(p, NoteChild, &cb);
}
nsresult
nsXPCOMCycleCollectionParticipant::Root(void *p)
nsXPCOMCycleCollectionParticipant::RootImpl(void *p)
{
nsISupports *s = static_cast<nsISupports*>(p);
NS_ADDREF(s);
@@ -31,13 +25,13 @@ nsXPCOMCycleCollectionParticipant::Root(void *p)
}
nsresult
nsXPCOMCycleCollectionParticipant::Unlink(void *p)
nsXPCOMCycleCollectionParticipant::UnlinkImpl(void *p)
{
return NS_OK;
}
nsresult
nsXPCOMCycleCollectionParticipant::Unroot(void *p)
nsXPCOMCycleCollectionParticipant::UnrootImpl(void *p)
{
nsISupports *s = static_cast<nsISupports*>(p);
NS_RELEASE(s);
@@ -45,20 +39,21 @@ nsXPCOMCycleCollectionParticipant::Unroot(void *p)
}
nsresult
nsXPCOMCycleCollectionParticipant::Traverse
(void *p, nsCycleCollectionTraversalCallback &cb)
nsXPCOMCycleCollectionParticipant::TraverseImpl
(nsXPCOMCycleCollectionParticipant* that, void *p,
nsCycleCollectionTraversalCallback &cb)
{
return NS_OK;
}
void
nsXPCOMCycleCollectionParticipant::UnmarkIfPurple(nsISupports *n)
nsXPCOMCycleCollectionParticipant::UnmarkIfPurpleImpl(nsISupports *n)
{
}
NS_IMETHODIMP_(void)
nsXPCOMCycleCollectionParticipant::Trace(void *p, TraceCallback cb,
void *closure)
nsXPCOMCycleCollectionParticipant::TraceImpl(void *p, TraceCallback cb,
void *closure)
{
}