Bug 939614: IonMonkey: Enable reschedule same optimizationLevel if osrPc is different, r=jandem

This commit is contained in:
Hannes Verschore 2013-12-12 15:14:13 +01:00
Родитель 5c72865a1a
Коммит c1566d3c2c
1 изменённых файлов: 14 добавлений и 8 удалений

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

@ -1726,15 +1726,15 @@ IonCompile(JSContext *cx, JSScript *script,
return builder->abortReason();
}
if (recompile) {
JS_ASSERT(executionMode == SequentialExecution);
builderScript->ionScript()->setRecompiling();
} else {
SetIonScript(builder->script(), executionMode, ION_COMPILING_SCRIPT);
}
// If possible, compile the script off thread.
if (OffThreadCompilationAvailable(cx)) {
if (recompile) {
JS_ASSERT(executionMode == SequentialExecution);
builderScript->ionScript()->setRecompiling();
} else {
SetIonScript(builder->script(), executionMode, ION_COMPILING_SCRIPT);
}
if (!StartOffThreadIonCompile(cx, builder)) {
IonSpew(IonSpew_Abort, "Unable to start off-thread ion compilation.");
return AbortReason_Alloc;
@ -1928,9 +1928,15 @@ Compile(JSContext *cx, HandleScript script, BaselineFrame *osrFrame, jsbytecode
// Don't recompile/overwrite higher optimized code,
// with a lower optimization level.
if (optimizationLevel <= scriptIon->optimizationLevel())
if (optimizationLevel < scriptIon->optimizationLevel())
return failedState;
if (optimizationLevel == scriptIon->optimizationLevel() &&
(!osrPc || script->ionScript()->osrPc() == osrPc))
{
return failedState;
}
// Don't start compiling if already compiling
if (scriptIon->isRecompiling())
return failedState;