зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1341283 - Avoid conflicts between GC zeal behavior and cooperative multithreading context switches, r=jonco.
This commit is contained in:
Родитель
f5cdd08aab
Коммит
33310aacec
|
@ -179,8 +179,13 @@ gc::GCRuntime::startVerifyPreBarriers()
|
|||
if (verifyPreData || isIncrementalGCInProgress())
|
||||
return;
|
||||
|
||||
if (IsIncrementalGCUnsafe(rt) != AbortReason::None || TlsContext.get()->keepAtoms || rt->hasHelperThreadZones())
|
||||
if (IsIncrementalGCUnsafe(rt) != AbortReason::None ||
|
||||
TlsContext.get()->keepAtoms ||
|
||||
rt->hasHelperThreadZones() ||
|
||||
rt->cooperatingContexts().length() != 1)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
number++;
|
||||
|
||||
|
|
|
@ -3600,6 +3600,11 @@ EvalInThread(JSContext* cx, unsigned argc, Value* vp, bool cooperative)
|
|||
return false;
|
||||
}
|
||||
|
||||
if (cooperative && !cx->runtime()->gc.canChangeActiveContext(cx)) {
|
||||
JS_ReportErrorASCII(cx, "Cooperating multithreading context switches are not currently allowed");
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!args[0].toString()->ensureLinear(cx))
|
||||
return false;
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче