Ignore:
Timestamp:
Sep 10, 2013, 9:35:16 PM (12 years ago)
Author:
[email protected]
Message:

Propagate the Int48 stuff into the prediction propagator.
https://bugs.webkit.org/show_bug.cgi?id=121132

Reviewed by Mark Hahnenberg.

This still has no effect on codegen since Int48 still looks like a Double right now.

  • bytecode/ExitKind.cpp:

(JSC::exitKindToString):

  • bytecode/ExitKind.h:
  • bytecode/SpeculatedType.cpp:

(JSC::speculationFromValue):

  • bytecode/SpeculatedType.h:

(JSC::isMachineIntSpeculation):
(JSC::isMachineIntSpeculationExpectingDefined):
(JSC::isMachineIntSpeculationForArithmetic):

  • dfg/DFGGraph.cpp:

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

  • dfg/DFGGraph.h:

(JSC::DFG::Graph::addShouldSpeculateMachineInt):
(JSC::DFG::Graph::mulShouldSpeculateInt32):
(JSC::DFG::Graph::mulShouldSpeculateMachineInt):
(JSC::DFG::Graph::negateShouldSpeculateMachineInt):
(JSC::DFG::Graph::hasExitSite):

  • dfg/DFGNode.h:

(JSC::DFG::Node::shouldSpeculateMachineInt):
(JSC::DFG::Node::shouldSpeculateMachineIntForArithmetic):
(JSC::DFG::Node::shouldSpeculateMachineIntExpectingDefined):
(JSC::DFG::Node::canSpeculateInt48):

  • dfg/DFGNodeFlags.h:

(JSC::DFG::nodeCanSpeculateInt48):

  • dfg/DFGPredictionPropagationPhase.cpp:

(JSC::DFG::PredictionPropagationPhase::propagate):

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/dfg/DFGNode.h

    r155497 r155499  
    12151215    }
    12161216   
     1217    bool shouldSpeculateMachineInt()
     1218    {
     1219        return isMachineIntSpeculation(prediction());
     1220    }
     1221   
     1222    bool shouldSpeculateMachineIntForArithmetic()
     1223    {
     1224        return isMachineIntSpeculationForArithmetic(prediction());
     1225    }
     1226   
     1227    bool shouldSpeculateMachineIntExpectingDefined()
     1228    {
     1229        return isMachineIntSpeculationExpectingDefined(prediction());
     1230    }
     1231   
    12171232    bool shouldSpeculateDouble()
    12181233    {
     
    13651380    }
    13661381   
     1382    static bool shouldSpeculateMachineInt(Node* op1, Node* op2)
     1383    {
     1384        return op1->shouldSpeculateMachineInt() && op2->shouldSpeculateMachineInt();
     1385    }
     1386   
     1387    static bool shouldSpeculateMachineIntForArithmetic(Node* op1, Node* op2)
     1388    {
     1389        return op1->shouldSpeculateMachineIntForArithmetic() && op2->shouldSpeculateMachineIntForArithmetic();
     1390    }
     1391   
     1392    static bool shouldSpeculateMachineIntExpectingDefined(Node* op1, Node* op2)
     1393    {
     1394        return op1->shouldSpeculateMachineIntExpectingDefined() && op2->shouldSpeculateMachineIntExpectingDefined();
     1395    }
     1396   
    13671397    static bool shouldSpeculateDoubleForArithmetic(Node* op1, Node* op2)
    13681398    {
     
    13931423    {
    13941424        return nodeCanSpeculateInt32(arithNodeFlags());
     1425    }
     1426   
     1427    bool canSpeculateInt48()
     1428    {
     1429        return nodeCanSpeculateInt48(arithNodeFlags());
    13951430    }
    13961431   
Note: See TracChangeset for help on using the changeset viewer.