Ignore:
Timestamp:
Jan 3, 2019, 9:58:32 AM (6 years ago)
Author:
[email protected]
Message:

DFG IntegerRangeOptimization phase exceeding loop limit shouldn't ASSERT
https://bugs.webkit.org/show_bug.cgi?id=193094

Reviewed by Saam Barati.

Removed this debug only ASSERT as one can construct test cases that will exceed the giveUpThreshold
amount. This can be done with a large switch statement with at least one const or variable case
clause. Such code bytecompiles to compare / jtrue sequences. Increasing the giveUpThreshold count
doesn't help with the eventual code generated as B3 has optimizations to coalesce compare / branch
code sequences even when we don't run the IntegerRangeOptimization phase.

  • dfg/DFGIntegerRangeOptimizationPhase.cpp:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/dfg/DFGIntegerRangeOptimizationPhase.cpp

    r228411 r239595  
    10931093            if (m_iterations >= giveUpThreshold) {
    10941094                // This case is not necessarily wrong but it can be a sign that this phase
    1095                 // does not converge.
    1096                 // If you hit this assertion for a legitimate case, update the giveUpThreshold
     1095                // does not converge. The value giveUpThreshold was chosen emperically based on
     1096                // current tests and real world JS.
     1097                // If you hit this case for a legitimate reason, update the giveUpThreshold
    10971098                // to the smallest values that converges.
    1098                 ASSERT_NOT_REACHED();
    1099 
    1100                 // In release, do not risk holding the thread for too long since this phase
    1101                 // is really slow.
     1099
     1100                // Do not risk holding the thread for too long since this phase is really slow.
    11021101                return false;
    11031102            }
Note: See TracChangeset for help on using the changeset viewer.