Ignore:
Timestamp:
Feb 6, 2012, 5:07:32 PM (13 years ago)
Author:
[email protected]
Message:

ValueToNumber and ValueToDouble nodes don't do anything and should be removed
https://bugs.webkit.org/show_bug.cgi?id=77855
<rdar://problem/10811325>

Reviewed by Gavin Barraclough.

Removed ValueToNumber and ValueToDouble, because the only thing they were doing
was wasting registers.

This looks like a 1% win on V8 (with a 5% win on crypto) and a 2-3% win on Kraken,
mostly due to a >10% win on gaussian-blur. No win anywhere else.

  • dfg/DFGAbstractState.cpp:

(JSC::DFG::AbstractState::execute):

  • dfg/DFGByteCodeParser.cpp:

(JSC::DFG::ByteCodeParser::getToInt32):
(ByteCodeParser):
(JSC::DFG::ByteCodeParser::handleMinMax):
(JSC::DFG::ByteCodeParser::handleIntrinsic):
(JSC::DFG::ByteCodeParser::parseBlock):

  • dfg/DFGNode.h:

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

  • dfg/DFGPropagator.cpp:

(JSC::DFG::Propagator::propagateArithNodeFlags):
(JSC::DFG::Propagator::propagateNodePredictions):
(JSC::DFG::Propagator::vote):
(JSC::DFG::Propagator::doRoundOfDoubleVoting):
(Propagator):
(JSC::DFG::Propagator::fixupNode):
(JSC::DFG::Propagator::canonicalize):

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::computeValueRecoveryFor):

  • dfg/DFGSpeculativeJIT32_64.cpp:

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

  • dfg/DFGSpeculativeJIT64.cpp:

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

File:
1 edited

Legend:

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

    r106502 r106879  
    263263        break;
    264264           
    265     case ValueToNumber:
    266         if (m_graph[node.child1()].shouldNotSpeculateInteger()) {
    267             forNode(node.child1()).filter(PredictNumber);
    268             forNode(nodeIndex).set(PredictDouble);
    269             break;
    270         }
    271            
    272         forNode(node.child1()).filter(PredictInt32);
    273         forNode(nodeIndex).set(PredictInt32);
    274         break;
    275            
    276     case ValueToDouble:
    277         forNode(node.child1()).filter(PredictNumber);
    278         forNode(nodeIndex).set(PredictDouble);
    279         break;
    280            
    281265    case ValueAdd:
    282266    case ArithAdd: {
Note: See TracChangeset for help on using the changeset viewer.