Ignore:
Timestamp:
Nov 30, 2015, 4:07:39 PM (10 years ago)
Author:
[email protected]
Message:

Refactor the op_add, op_sub, and op_mul snippets to use the SnippetOperand class.
https://bugs.webkit.org/show_bug.cgi?id=151678

Reviewed by Geoffrey Garen.

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compileValueAdd):
(JSC::DFG::SpeculativeJIT::compileArithSub):

  • ftl/FTLCompile.cpp:
  • jit/JITAddGenerator.cpp:

(JSC::JITAddGenerator::generateFastPath):

  • jit/JITAddGenerator.h:

(JSC::JITAddGenerator::JITAddGenerator):

  • jit/JITArithmetic.cpp:

(JSC::JIT::emit_op_add):
(JSC::JIT::emit_op_mul):
(JSC::JIT::emit_op_sub):

  • jit/JITMulGenerator.cpp:

(JSC::JITMulGenerator::generateFastPath):

  • jit/JITMulGenerator.h:

(JSC::JITMulGenerator::JITMulGenerator):

  • jit/JITSubGenerator.cpp:

(JSC::JITSubGenerator::generateFastPath):

  • jit/JITSubGenerator.h:

(JSC::JITSubGenerator::JITSubGenerator):

  • jit/SnippetOperand.h:

(JSC::SnippetOperand::isPositiveConstInt32):

File:
1 edited

Legend:

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

    r192814 r192842  
    28542854#endif
    28552855
    2856     ResultType leftType = m_state.forNode(node->child1()).resultType();
    2857     ResultType rightType = m_state.forNode(node->child2()).resultType();
    2858     int32_t leftConstInt32 = 0;
    2859     int32_t rightConstInt32 = 0;
    2860 
    2861     ASSERT(!leftIsConstInt32 || !rightIsConstInt32);
    2862 
    2863     if (leftIsConstInt32) {
    2864         leftConstInt32 = node->child1()->asInt32();
     2856    SnippetOperand leftOperand(m_state.forNode(node->child1()).resultType());
     2857    SnippetOperand rightOperand(m_state.forNode(node->child2()).resultType());
     2858
     2859    if (leftIsConstInt32)
     2860        leftOperand.setConstInt32(node->child1()->asInt32());
     2861    if (rightIsConstInt32)
     2862        rightOperand.setConstInt32(node->child2()->asInt32());
     2863
     2864    ASSERT(!leftOperand.isConst() || !rightOperand.isConst());
     2865
     2866    if (!leftOperand.isConst()) {
     2867        left = JSValueOperand(this, node->child1());
     2868        leftRegs = left->jsValueRegs();
     2869    }
     2870    if (!rightOperand.isConst()) {
    28652871        right = JSValueOperand(this, node->child2());
    28662872        rightRegs = right->jsValueRegs();
    2867     } else if (rightIsConstInt32) {
    2868         left = JSValueOperand(this, node->child1());
    2869         leftRegs = left->jsValueRegs();
    2870         rightConstInt32 = node->child2()->asInt32();
    2871     } else {
    2872         left = JSValueOperand(this, node->child1());
    2873         leftRegs = left->jsValueRegs();
    2874         right = JSValueOperand(this, node->child2());
    2875         rightRegs = right->jsValueRegs();
    2876     }
    2877 
    2878     JITAddGenerator gen(resultRegs, leftRegs, rightRegs, leftType, rightType,
    2879         leftIsConstInt32, rightIsConstInt32, leftConstInt32, rightConstInt32,
     2873    }
     2874
     2875    JITAddGenerator gen(leftOperand, rightOperand, resultRegs, leftRegs, rightRegs,
    28802876        leftFPR, rightFPR, scratchGPR, scratchFPR);
    28812877    gen.generateFastPath(m_jit);
     
    32173213        JSValueRegs rightRegs = right.jsValueRegs();
    32183214
    3219         ResultType leftType = m_state.forNode(node->child1()).resultType();
    3220         ResultType rightType = m_state.forNode(node->child2()).resultType();
    3221 
    32223215        FPRTemporary leftNumber(this);
    32233216        FPRTemporary rightNumber(this);
     
    32403233#endif
    32413234
    3242         JITSubGenerator gen(resultRegs, leftRegs, rightRegs, leftType, rightType,
     3235        SnippetOperand leftOperand(m_state.forNode(node->child1()).resultType());
     3236        SnippetOperand rightOperand(m_state.forNode(node->child2()).resultType());
     3237
     3238        JITSubGenerator gen(leftOperand, rightOperand, resultRegs, leftRegs, rightRegs,
    32433239            leftFPR, rightFPR, scratchGPR, scratchFPR);
    32443240        gen.generateFastPath(m_jit);
Note: See TracChangeset for help on using the changeset viewer.