Backed out changeset 6f7f5787e46e (bug 953164)

This commit is contained in:
Carsten "Tomcat" Book 2014-02-26 13:59:41 +01:00
Родитель 46e8691586
Коммит 9a60f1ccd9
3 изменённых файлов: 12 добавлений и 8 удалений

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

@ -1377,8 +1377,8 @@ OptimizeMIR(MIRGenerator *mir)
// before its bounds check.
if (!EliminateRedundantChecks(graph))
return false;
IonSpewPass("Bounds Check Elimination");
AssertGraphCoherency(graph);
IonSpewPass("Bounds Check Elimination");
}
return true;
@ -1396,7 +1396,7 @@ GenerateLIR(MIRGenerator *mir)
LIRGenerator lirgen(mir, graph, *lir);
if (!lirgen.generate())
return nullptr;
IonSpewPass("Generate LIR");
//IonSpewPass("Generate LIR");
if (mir->shouldCancel("Generate LIR"))
return nullptr;
@ -1419,7 +1419,7 @@ GenerateLIR(MIRGenerator *mir)
return nullptr;
#endif
IonSpewPass("Allocate Registers [LSRA]", &regalloc);
//IonSpewPass("Allocate Registers [LSRA]", &regalloc);
break;
}
@ -1438,7 +1438,7 @@ GenerateLIR(MIRGenerator *mir)
return nullptr;
#endif
IonSpewPass("Allocate Registers [Backtracking]");
//IonSpewPass("Allocate Registers [Backtracking]");
break;
}
@ -1453,7 +1453,7 @@ GenerateLIR(MIRGenerator *mir)
return nullptr;
if (!integrity.check(true))
return nullptr;
IonSpewPass("Allocate Registers [Stupid]");
//IonSpewPass("Allocate Registers [Stupid]");
break;
}
@ -1468,7 +1468,7 @@ GenerateLIR(MIRGenerator *mir)
// critical edges to avoid unnecessary jumps.
if (!UnsplitEdges(lir))
return nullptr;
IonSpewPass("Unsplit Critical Edges");
//IonSpewPass("Unsplit Critical Edges");
AssertBasicGraphCoherency(graph);
return lir;

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

@ -1287,6 +1287,7 @@ jit::AssertBasicGraphCoherency(MIRGraph &graph)
// Assert successor and predecessor list coherency.
uint32_t count = 0;
size_t compares = 0;
for (MBasicBlockIterator block(graph.begin()); block != graph.end(); block++) {
count++;
@ -1300,6 +1301,8 @@ jit::AssertBasicGraphCoherency(MIRGraph &graph)
// Assert that use chains are valid for this instruction.
for (MDefinitionIterator iter(*block); iter; iter++) {
if (iter->isCompare())
compares++;
for (uint32_t i = 0, e = iter->numOperands(); i < e; i++)
JS_ASSERT(CheckOperandImpliesUse(*iter, iter->getOperand(i)));
}

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

@ -3032,12 +3032,13 @@ IonBuilder::filterTypesAtTest(MTest *test)
return true;
// Only do this optimization if the typeset does contains null or undefined.
if ((!(removeUndefined && subject->resultTypeSet()->hasType(types::Type::UndefinedType())) &&
!(removeNull && subject->resultTypeSet()->hasType(types::Type::NullType()))))
if (!((removeUndefined && subject->resultTypeSet()->hasType(types::Type::UndefinedType())) ||
(removeNull && subject->resultTypeSet()->hasType(types::Type::NullType()))))
{
return true;
}
//printf("%d: replacing\n", script()->lineno());
// Find all values on the stack that correspond to the subject
// and replace it with a MIR with filtered TypeSet information.
// Create the replacement MIR lazily upon first occurence.