Bug 368869, suspect all native wrappers for cycle collection. Relanding. Patch by graydon@mozilla.com. r=brendan, sr=jst

This commit is contained in:
dbaron@dbaron.org 2007-06-21 15:25:51 -07:00
Родитель 12e4d7ca12
Коммит 29b07f1918
1 изменённых файлов: 11 добавлений и 7 удалений

Просмотреть файл

@ -272,13 +272,17 @@ WrappedNativeJSGCThingTracer(JSDHashTable *table, JSDHashEntryHdr *hdr,
JS_CALL_OBJECT_TRACER(trc, wrapper->GetFlatJSObject(),
"XPCWrappedNative::mFlatJSObject");
// FIXME: this call appears to do more harm than good, but
// there is reason to imagine it might clean up some cycles
// formed by a poor order between C++ and JS garbage cycle
// formations. See Bug 368869.
//
// if (JS_IsGCMarkingTracer(trc))
// nsCycleCollector_suspectCurrent(wrapper);
if (JS_IsGCMarkingTracer(trc))
{
XPCWrappedNativeProto* proto = wrapper->GetProto();
if (proto &&
proto->ClassIsMainThreadOnly())
{
NS_ASSERTION(NS_IsMainThread(),
"Tracing wrapped natives from non-main thread");
nsCycleCollector_suspectCurrent(wrapper);
}
}
}
return JS_DHASH_NEXT;
}