Backed out changeset 5f2e8622f945 (bug 1139376) for causing frequent Win8 w-p-t timeouts.

This commit is contained in:
Ryan VanderMeulen 2015-06-02 16:05:41 -04:00
parent c04907d576
commit 2f3b6247c5
3 changed files with 15 additions and 30 deletions

View File

@ -1,13 +0,0 @@
// |jit-test| error:ReferenceError
(function() {
var $10=0;
while (1) {
switch (stack.label & 2) {
case 1:
return $8|0;
case 49:
if ($10) {}
}
}
})()()

View File

@ -3335,8 +3335,8 @@ RangeAnalysis::prepareForUCE(bool* shouldRemoveDeadCode)
return tryRemovingGuards();
}
bool RangeAnalysis::tryRemovingGuards()
{
bool RangeAnalysis::tryRemovingGuards() {
MDefinitionVector guards(alloc());
for (ReversePostorderIterator block = graph_.rpoBegin(); block != graph_.rpoEnd(); block++) {
@ -3364,22 +3364,20 @@ bool RangeAnalysis::tryRemovingGuards()
guard->setGuardRangeBailouts();
#endif
if (!guard->isPhi()) {
if (!guard->range())
continue;
if (!guard->range())
continue;
// Filter the range of the instruction based on its MIRType.
Range typeFilteredRange(guard);
// Filter the range of the instruction based on its MIRType.
Range typeFilteredRange(guard);
// If the output range is updated by adding the inner range,
// then the MIRType act as an effectful filter. As we do not know if
// this filtered Range might change or not the result of the
// previous comparison, we have to keep this instruction as a guard
// because it has to bailout in order to restrict the Range to its
// MIRType.
if (typeFilteredRange.update(guard->range()))
continue;
}
// If the output range is updated by adding the inner range,
// then the MIRType act as an effectful filter. As we do not know if
// this filtered Range might change or not the result of the
// previous comparison, we have to keep this instruction as a guard
// because it has to bailout in order to restrict the Range to its
// MIRType.
if (typeFilteredRange.update(guard->range()))
continue;
guard->setNotGuardRangeBailouts();

View File

@ -682,7 +682,7 @@ ValueNumberer::loopHasOptimizablePhi(MBasicBlock* header) const
// values from backedges.
for (MPhiIterator iter(header->phisBegin()), end(header->phisEnd()); iter != end; ++iter) {
MPhi* phi = *iter;
MOZ_ASSERT_IF(!phi->hasUses(), !DeadIfUnused(phi));
MOZ_ASSERT(phi->hasUses(), "Missed an unused phi");
if (phi->operandIfRedundant() || hasLeader(phi, header))
return true; // Phi can be simplified.