зеркало из https://github.com/mozilla/gecko-dev.git
Bug 368869, suspect all native wrappers for cycle collection. Relanding. Patch by graydon@mozilla.com. r=brendan, sr=jst
This commit is contained in:
Родитель
d23ec86bfc
Коммит
3cd4d2979c
|
@ -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;
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче