Bug 730208 - Root JSD's pet global so it can't participate in CC cycles. r=billm

--HG--
extra : rebase_source : 9bf6a12faedab111efee048af0e543b2c1881782
This commit is contained in:
Steve Fink 2012-03-20 21:29:47 -07:00
parent c50109b8cd
commit e7d605843a

View File

@ -148,6 +148,9 @@ _newJSDContext(JSRuntime* jsrt,
if( ! call )
goto label_newJSDContext_failure;
if ( ! JS_AddNamedObjectRoot(jsdc->dumbContext, &jsdc->glob, "JSD context global") )
goto label_newJSDContext_failure;
ok = JS_InitStandardClasses(jsdc->dumbContext, jsdc->glob);
JS_LeaveCrossCompartmentCall(call);
@ -167,6 +170,8 @@ _newJSDContext(JSRuntime* jsrt,
label_newJSDContext_failure:
if( jsdc ) {
if ( jsdc->dumbContext && jsdc->glob )
JS_RemoveObjectRootRT(JS_GetRuntime(jsdc->dumbContext), &jsdc->glob);
jsd_DestroyObjectManager(jsdc);
jsd_DestroyAtomTable(jsdc);
if( jsdc->dumbContext )
@ -185,6 +190,9 @@ _destroyJSDContext(JSDContext* jsdc)
JS_REMOVE_LINK(&jsdc->links);
JSD_UNLOCK();
if ( jsdc->dumbContext && jsdc->glob ) {
JS_RemoveObjectRootRT(JS_GetRuntime(jsdc->dumbContext), &jsdc->glob);
}
jsd_DestroyObjectManager(jsdc);
jsd_DestroyAtomTable(jsdc);