Ignore:
Timestamp:
Jan 2, 2014, 12:15:25 PM (11 years ago)
Author:
[email protected]
Message:

Rationalize DFG DCE
https://bugs.webkit.org/show_bug.cgi?id=125523

Reviewed by Mark Hahnenberg.

Adds the ability to DCE more things. It's now the case that if a node is completely
pure, we clear NodeMustGenerate and the node becomes a DCE candidate.

  • dfg/DFGAbstractInterpreterInlines.h:

(JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects):

  • dfg/DFGCSEPhase.cpp:

(JSC::DFG::CSEPhase::performNodeCSE):

  • dfg/DFGClobberize.h:

(JSC::DFG::clobberize):

  • dfg/DFGDCEPhase.cpp:

(JSC::DFG::DCEPhase::cleanVariables):

  • dfg/DFGFixupPhase.cpp:

(JSC::DFG::FixupPhase::fixupNode):

  • dfg/DFGGraph.h:

(JSC::DFG::Graph::clobbersWorld):

  • dfg/DFGNodeType.h:
  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compileAdd):

  • dfg/DFGSpeculativeJIT.h:
  • dfg/DFGSpeculativeJIT32_64.cpp:

(JSC::DFG::SpeculativeJIT::compile):

  • dfg/DFGSpeculativeJIT64.cpp:

(JSC::DFG::SpeculativeJIT::compile):

  • ftl/FTLLowerDFGToLLVM.cpp:

(JSC::FTL::LowerDFGToLLVM::compileNode):
(JSC::FTL::LowerDFGToLLVM::compileValueAdd):

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp

    r161126 r161218  
    262262            compilePhantom();
    263263            break;
     264        case ValueAdd:
     265            compileValueAdd();
     266            break;
    264267        case ArithAdd:
    265         case ValueAdd:
    266268            compileAddSub();
    267269            break;
     
    762764    {
    763765        DFG_NODE_DO_TO_CHILDREN(m_graph, m_node, speculate);
     766    }
     767   
     768    void compileValueAdd()
     769    {
     770        J_JITOperation_EJJ operation;
     771        if (!(m_state.forNode(m_node->child1()).m_type & SpecFullNumber)
     772            && !(m_state.forNode(m_node->child2()).m_type & SpecFullNumber))
     773            operation = operationValueAddNotNumber;
     774        else
     775            operation = operationValueAdd;
     776        setJSValue(vmCall(
     777            m_out.operation(operation), m_callFrame,
     778            lowJSValue(m_node->child1()), lowJSValue(m_node->child2())));
    764779    }
    765780   
Note: See TracChangeset for help on using the changeset viewer.