Ignore:
Timestamp:
Jul 24, 2013, 9:04:53 PM (12 years ago)
Author:
[email protected]
Message:

fourthTier: Rationalize Node::replacement
https://bugs.webkit.org/show_bug.cgi?id=118774

Reviewed by Oliver Hunt.

  • Clearing of replacements is now done in Graph::clearReplacements().
  • New nodes now have replacement set to 0.
  • dfg/DFGCPSRethreadingPhase.cpp:

(JSC::DFG::CPSRethreadingPhase::run):
(JSC::DFG::CPSRethreadingPhase::freeUnnecessaryNodes):
(JSC::DFG::CPSRethreadingPhase::canonicalizeGetLocalFor):

  • dfg/DFGCSEPhase.cpp:

(JSC::DFG::CSEPhase::run):
(JSC::DFG::CSEPhase::setReplacement):
(JSC::DFG::CSEPhase::performBlockCSE):

  • dfg/DFGGraph.cpp:

(DFG):
(JSC::DFG::Graph::clearReplacements):

  • dfg/DFGGraph.h:

(JSC::DFG::Graph::performSubstitutionForEdge):
(Graph):

  • dfg/DFGNode.h:

(JSC::DFG::Node::Node):

  • dfg/DFGSSAConversionPhase.cpp:

(JSC::DFG::SSAConversionPhase::run):

File:
1 edited

Legend:

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

    r153269 r153278  
    5353        m_changed = false;
    5454       
     55        m_graph.clearReplacements();
     56       
    5557        for (unsigned blockIndex = 0; blockIndex < m_graph.numBlocks(); ++blockIndex)
    5658            performBlockCSE(m_graph.block(blockIndex));
     
    10061008       
    10071009        // At this point we will eliminate all references to this node.
    1008         m_currentNode->replacement = replacement;
     1010        m_currentNode->misc.replacement = replacement;
    10091011       
    10101012        m_changed = true;
     
    13971399            m_lastSeen[i] = UINT_MAX;
    13981400       
    1399         // All Phis need to already be marked as relevant to OSR, and have their
    1400         // replacements cleared, so we don't get confused while doing substitutions on
    1401         // GetLocal's.
    1402         for (unsigned i = 0; i < block->phis.size(); ++i) {
    1403             ASSERT(block->phis[i]->flags() & NodeRelevantToOSR);
    1404             block->phis[i]->replacement = 0;
     1401        // All Phis need to already be marked as relevant to OSR.
     1402        if (!ASSERT_DISABLED) {
     1403            for (unsigned i = 0; i < block->phis.size(); ++i)
     1404                ASSERT(block->phis[i]->flags() & NodeRelevantToOSR);
    14051405        }
    14061406       
     
    14101410            Node* node = block->at(i);
    14111411           
    1412             node->replacement = 0;
    1413            
    14141412            switch (node->op()) {
    14151413            case SetLocal:
     
    14311429            // Nobody should have replacements set.
    14321430            for (unsigned i = 0; i < block->size(); ++i)
    1433                 ASSERT(!block->at(i)->replacement);
     1431                ASSERT(!block->at(i)->misc.replacement);
    14341432        }
    14351433    }
Note: See TracChangeset for help on using the changeset viewer.