Ignore:
Timestamp:
Mar 24, 2012, 5:46:21 PM (13 years ago)
Author:
[email protected]
Message:

DFG double voting may be overzealous in the case of variables that end up
being used as integers
https://bugs.webkit.org/show_bug.cgi?id=82008

Reviewed by Oliver Hunt.

Cleaned up propagation, making the intent more explicit in most places.
Back-propagate NodeUsedAsInt for cases where a node was used in a context
that is known to strongly prefer integers.

  • dfg/DFGByteCodeParser.cpp:

(JSC::DFG::ByteCodeParser::handleCall):
(JSC::DFG::ByteCodeParser::parseBlock):

  • dfg/DFGGraph.cpp:

(JSC::DFG::Graph::dumpCodeOrigin):
(JSC::DFG::Graph::dump):

  • dfg/DFGGraph.h:

(Graph):

  • dfg/DFGNodeFlags.cpp:

(JSC::DFG::nodeFlagsAsString):

  • dfg/DFGNodeFlags.h:

(DFG):

  • dfg/DFGPredictionPropagationPhase.cpp:

(JSC::DFG::PredictionPropagationPhase::run):
(JSC::DFG::PredictionPropagationPhase::propagate):
(PredictionPropagationPhase):
(JSC::DFG::PredictionPropagationPhase::mergeDefaultFlags):
(JSC::DFG::PredictionPropagationPhase::vote):
(JSC::DFG::PredictionPropagationPhase::doRoundOfDoubleVoting):
(JSC::DFG::PredictionPropagationPhase::fixupNode):

  • dfg/DFGVariableAccessData.h:

(JSC::DFG::VariableAccessData::shouldUseDoubleFormatAccordingToVote):

File:
1 edited

Legend:

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

    r111781 r112015  
    124124    }
    125125   
     126    if (flags & NodeUsedAsInt) {
     127        if (hasPrinted)
     128            ptr.strcat("|");
     129        ptr.strcat("UsedAsInt");
     130        hasPrinted = true;
     131    }
     132   
    126133    *ptr++ = 0;
    127134   
Note: See TracChangeset for help on using the changeset viewer.