зеркало из https://github.com/mozilla/gecko-dev.git
Backed out changeset f2019fbd6f8c (bug 1341326) for failing backup-point-bug1315634.js and more on arm. r=backout
This commit is contained in:
Родитель
dbda93465f
Коммит
54c0337374
|
@ -1,15 +0,0 @@
|
||||||
if (helperThreadCount() == 0)
|
|
||||||
quit();
|
|
||||||
function eval(source) {
|
|
||||||
offThreadCompileModule(source);
|
|
||||||
}
|
|
||||||
var N = 10000;
|
|
||||||
var left = repeat_str('(1&', N);
|
|
||||||
var right = repeat_str(')', N);
|
|
||||||
var str = 'actual = '.concat(left, '1', right, ';');
|
|
||||||
eval(str);
|
|
||||||
function repeat_str(str, repeat_count) {
|
|
||||||
var arr = new Array(--repeat_count);
|
|
||||||
while (repeat_count != 0) arr[--repeat_count] = str;
|
|
||||||
return str.concat.apply(str, arr);
|
|
||||||
}
|
|
|
@ -78,7 +78,6 @@ js::Thread::Thread(Thread&& aOther)
|
||||||
{
|
{
|
||||||
id_ = aOther.id_;
|
id_ = aOther.id_;
|
||||||
aOther.id_ = Id();
|
aOther.id_ = Id();
|
||||||
options_ = aOther.options_;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
js::Thread&
|
js::Thread&
|
||||||
|
@ -87,7 +86,6 @@ js::Thread::operator=(Thread&& aOther)
|
||||||
MOZ_RELEASE_ASSERT(!joinable());
|
MOZ_RELEASE_ASSERT(!joinable());
|
||||||
id_ = aOther.id_;
|
id_ = aOther.id_;
|
||||||
aOther.id_ = Id();
|
aOther.id_ = Id();
|
||||||
options_ = aOther.options_;
|
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -59,7 +59,6 @@ js::Thread::Thread(Thread&& aOther)
|
||||||
{
|
{
|
||||||
id_ = aOther.id_;
|
id_ = aOther.id_;
|
||||||
aOther.id_ = Id();
|
aOther.id_ = Id();
|
||||||
options_ = aOther.options_;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
js::Thread&
|
js::Thread&
|
||||||
|
@ -68,7 +67,6 @@ js::Thread::operator=(Thread&& aOther)
|
||||||
MOZ_RELEASE_ASSERT(!joinable());
|
MOZ_RELEASE_ASSERT(!joinable());
|
||||||
id_ = aOther.id_;
|
id_ = aOther.id_;
|
||||||
aOther.id_ = Id();
|
aOther.id_ = Id();
|
||||||
options_ = aOther.options_;
|
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1663,7 +1663,7 @@ JSContext::addPendingOutOfMemory()
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
HelperThread::handleParseWorkload(AutoLockHelperThreadState& locked)
|
HelperThread::handleParseWorkload(AutoLockHelperThreadState& locked, uintptr_t stackLimit)
|
||||||
{
|
{
|
||||||
MOZ_ASSERT(HelperThreadState().canStartParseTask(locked));
|
MOZ_ASSERT(HelperThreadState().canStartParseTask(locked));
|
||||||
MOZ_ASSERT(idle());
|
MOZ_ASSERT(idle());
|
||||||
|
@ -1903,7 +1903,14 @@ HelperThread::threadLoop()
|
||||||
oomUnsafe.crash("HelperThread cx.init()");
|
oomUnsafe.crash("HelperThread cx.init()");
|
||||||
}
|
}
|
||||||
cx.setHelperThread(this);
|
cx.setHelperThread(this);
|
||||||
JS_SetNativeStackQuota(&cx, HELPER_STACK_QUOTA);
|
|
||||||
|
// Compute the thread's stack limit, for over-recursed checks.
|
||||||
|
uintptr_t stackLimit = GetNativeStackBase();
|
||||||
|
#if JS_STACK_GROWTH_DIRECTION > 0
|
||||||
|
stackLimit += HELPER_STACK_QUOTA;
|
||||||
|
#else
|
||||||
|
stackLimit -= HELPER_STACK_QUOTA;
|
||||||
|
#endif
|
||||||
|
|
||||||
while (true) {
|
while (true) {
|
||||||
MOZ_ASSERT(idle());
|
MOZ_ASSERT(idle());
|
||||||
|
@ -1939,7 +1946,7 @@ HelperThread::threadLoop()
|
||||||
handlePromiseTaskWorkload(lock);
|
handlePromiseTaskWorkload(lock);
|
||||||
} else if (HelperThreadState().canStartParseTask(lock)) {
|
} else if (HelperThreadState().canStartParseTask(lock)) {
|
||||||
js::oom::SetThreadType(js::oom::THREAD_TYPE_PARSE);
|
js::oom::SetThreadType(js::oom::THREAD_TYPE_PARSE);
|
||||||
handleParseWorkload(lock);
|
handleParseWorkload(lock, stackLimit);
|
||||||
} else if (HelperThreadState().canStartCompressionTask(lock)) {
|
} else if (HelperThreadState().canStartCompressionTask(lock)) {
|
||||||
js::oom::SetThreadType(js::oom::THREAD_TYPE_COMPRESS);
|
js::oom::SetThreadType(js::oom::THREAD_TYPE_COMPRESS);
|
||||||
handleCompressionWorkload(lock);
|
handleCompressionWorkload(lock);
|
||||||
|
|
|
@ -384,7 +384,7 @@ struct HelperThread
|
||||||
void handleWasmWorkload(AutoLockHelperThreadState& locked);
|
void handleWasmWorkload(AutoLockHelperThreadState& locked);
|
||||||
void handlePromiseTaskWorkload(AutoLockHelperThreadState& locked);
|
void handlePromiseTaskWorkload(AutoLockHelperThreadState& locked);
|
||||||
void handleIonWorkload(AutoLockHelperThreadState& locked);
|
void handleIonWorkload(AutoLockHelperThreadState& locked);
|
||||||
void handleParseWorkload(AutoLockHelperThreadState& locked);
|
void handleParseWorkload(AutoLockHelperThreadState& locked, uintptr_t stackLimit);
|
||||||
void handleCompressionWorkload(AutoLockHelperThreadState& locked);
|
void handleCompressionWorkload(AutoLockHelperThreadState& locked);
|
||||||
void handleGCHelperWorkload(AutoLockHelperThreadState& locked);
|
void handleGCHelperWorkload(AutoLockHelperThreadState& locked);
|
||||||
void handleGCParallelWorkload(AutoLockHelperThreadState& locked);
|
void handleGCParallelWorkload(AutoLockHelperThreadState& locked);
|
||||||
|
|
Загрузка…
Ссылка в новой задаче