Changeset 179817 in webkit


Ignore:
Timestamp:
Feb 8, 2015 6:42:22 PM (9 years ago)
Author:
benjamin@webkit.org
Message:

Remove a few duplicate propagation steps from the DFG's PredictionPropagation phase
https://bugs.webkit.org/show_bug.cgi?id=141363

Reviewed by Darin Adler.

  • dfg/DFGPredictionPropagationPhase.cpp:

(JSC::DFG::PredictionPropagationPhase::propagate):
Some blocks were duplicated, they probably evolved separately
to the same state.

Location:
trunk/Source/JavaScriptCore
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/ChangeLog

    r179816 r179817  
     12015-02-08  Benjamin Poulain  <benjamin@webkit.org>
     2
     3        Remove a few duplicate propagation steps from the DFG's PredictionPropagation phase
     4        https://bugs.webkit.org/show_bug.cgi?id=141363
     5
     6        Reviewed by Darin Adler.
     7
     8        * dfg/DFGPredictionPropagationPhase.cpp:
     9        (JSC::DFG::PredictionPropagationPhase::propagate):
     10        Some blocks were duplicated, they probably evolved separately
     11        to the same state.
     12
    1132015-02-08  Benjamin Poulain  <benjamin@webkit.org>
    214
  • trunk/Source/JavaScriptCore/dfg/DFGPredictionPropagationPhase.cpp

    r179478 r179817  
    250250            break;
    251251        }
    252            
    253         case ArithAdd: {
    254             SpeculatedType left = node->child1()->prediction();
    255             SpeculatedType right = node->child2()->prediction();
    256            
    257             if (left && right) {
    258                 if (m_graph.addSpeculationMode(node, m_pass) != DontSpeculateInt32)
    259                     changed |= mergePrediction(SpecInt32);
    260                 else if (m_graph.addShouldSpeculateMachineInt(node))
    261                     changed |= mergePrediction(SpecInt52);
    262                 else
    263                     changed |= mergePrediction(speculatedDoubleTypeForPredictions(left, right));
    264             }
    265             break;
    266         }
    267            
     252
     253        case ArithAdd:
    268254        case ArithSub: {
    269255            SpeculatedType left = node->child1()->prediction();
     
    321307            break;
    322308        }
    323            
    324         case ArithDiv: {
    325             SpeculatedType left = node->child1()->prediction();
    326             SpeculatedType right = node->child2()->prediction();
    327            
    328             if (left && right) {
    329                 if (Node::shouldSpeculateInt32OrBooleanForArithmetic(node->child1().node(), node->child2().node())
    330                     && node->canSpeculateInt32(m_pass))
    331                     changed |= mergePrediction(SpecInt32);
    332                 else
    333                     changed |= mergePrediction(SpecBytecodeDouble);
    334             }
    335             break;
    336         }
    337            
     309
     310        case ArithDiv:
    338311        case ArithMod: {
    339312            SpeculatedType left = node->child1()->prediction();
     
    596569            break;
    597570        }
    598         case HasGenericProperty: {
    599             changed |= setPrediction(SpecBoolean);
    600             break;
    601         }
    602         case HasStructureProperty: {
    603             changed |= setPrediction(SpecBoolean);
    604             break;
    605         }
     571        case HasGenericProperty:
     572        case HasStructureProperty:
    606573        case HasIndexedProperty: {
    607574            changed |= setPrediction(SpecBoolean);
    608575            break;
    609576        }
    610         case GetStructurePropertyEnumerator: {
    611             changed |= setPrediction(SpecCell);
    612             break;
    613         }
     577        case GetStructurePropertyEnumerator:
    614578        case GetGenericPropertyEnumerator: {
    615579            changed |= setPrediction(SpecCell);
Note: See TracChangeset for help on using the changeset viewer.