Bug 1136322 - Optimize anon scopes from CC graph, r=mccr8

This commit is contained in:
Olli Pettay 2015-02-25 00:23:53 +02:00
parent 49b025d745
commit 2e7c8d5696
5 changed files with 18 additions and 0 deletions

View File

@ -41,6 +41,7 @@ ProcessGlobal::Get()
NS_IMETHODIMP_(bool)
ProcessGlobal::MarkForCC()
{
MarkScopesForCC();
return mMessageManager ? mMessageManager->MarkForCC() : false;
}

View File

@ -1682,6 +1682,17 @@ nsMessageManagerScriptExecutor::InitChildGlobalInternal(
return true;
}
void
nsMessageManagerScriptExecutor::MarkScopesForCC()
{
for (uint32_t i = 0; i < mAnonymousGlobalScopes.Length(); ++i) {
JSObject* obj = mAnonymousGlobalScopes[i];
if (obj) {
JS::ExposeObjectToActiveJS(obj);
}
}
}
NS_IMPL_ISUPPORTS(nsScriptCacheCleaner, nsIObserver)
nsFrameMessageManager* nsFrameMessageManager::sChildProcessManager = nullptr;

View File

@ -401,6 +401,8 @@ public:
nsCOMPtr<nsIXPConnectJSObjectHolder> ref = mGlobal;
return ref.forget();
}
void MarkScopesForCC();
protected:
friend class nsMessageManagerScriptCx;
nsMessageManagerScriptExecutor() { MOZ_COUNT_CTOR(nsMessageManagerScriptExecutor); }

View File

@ -129,6 +129,7 @@ nsInProcessTabChildGlobal::~nsInProcessTabChildGlobal()
NS_IMETHODIMP_(bool)
nsInProcessTabChildGlobal::MarkForCC()
{
MarkScopesForCC();
return mMessageManager ? mMessageManager->MarkForCC() : false;
}

View File

@ -3202,6 +3202,9 @@ NS_IMPL_RELEASE_INHERITED(TabChildGlobal, DOMEventTargetHelper)
NS_IMETHODIMP_(bool)
TabChildGlobal::MarkForCC()
{
if (mTabChild) {
mTabChild->MarkScopesForCC();
}
return mMessageManager ? mMessageManager->MarkForCC() : false;
}