Changeset 198024 in webkit


Ignore:
Timestamp:
Mar 11, 2016 9:51:00 AM (8 years ago)
Author:
commit-queue@webkit.org
Message:

Unreviewed, rolling out r197994.
https://bugs.webkit.org/show_bug.cgi?id=155368

Broke several ARM tests (Requested by msaboff on #webkit).

Reverted changeset:

"[JSC] Add register reuse for ArithAdd of an Int32 and
constant in DFG"
https://bugs.webkit.org/show_bug.cgi?id=155164
http://trac.webkit.org/changeset/197994

Location:
trunk/Source/JavaScriptCore
Files:
1 deleted
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/ChangeLog

    r198023 r198024  
     12016-03-11  Commit Queue  <commit-queue@webkit.org>
     2
     3        Unreviewed, rolling out r197994.
     4        https://bugs.webkit.org/show_bug.cgi?id=155368
     5
     6        Broke several ARM tests (Requested by msaboff on #webkit).
     7
     8        Reverted changeset:
     9
     10        "[JSC] Add register reuse for ArithAdd of an Int32 and
     11        constant in DFG"
     12        https://bugs.webkit.org/show_bug.cgi?id=155164
     13        http://trac.webkit.org/changeset/197994
     14
    1152016-03-11  Yusuke Suzuki  <utatane.tea@gmail.com>
    216
  • trunk/Source/JavaScriptCore/dfg/DFGOSRExit.h

    r197994 r198024  
    4949// This enum describes the types of additional recovery that
    5050// may need be performed should a speculation check fail.
    51 enum SpeculationRecoveryType : uint8_t {
     51enum SpeculationRecoveryType {
    5252    SpeculativeAdd,
    53     SpeculativeAddImmediate,
    5453    BooleanSpeculationCheck
    5554};
     
    6261public:
    6362    SpeculationRecovery(SpeculationRecoveryType type, GPRReg dest, GPRReg src)
    64         : m_src(src)
     63        : m_type(type)
    6564        , m_dest(dest)
    66         , m_type(type)
    67     {
    68     }
    69 
    70     SpeculationRecovery(SpeculationRecoveryType type, GPRReg dest, int32_t immediate)
    71         : m_immediate(immediate)
    72         , m_dest(dest)
    73         , m_type(type)
     65        , m_src(src)
    7466    {
    7567    }
     
    7870    GPRReg dest() { return m_dest; }
    7971    GPRReg src() { return m_src; }
    80     int32_t immediate() { return m_immediate; }
    8172
    8273private:
    83     // different recovery types may required different additional information here.
    84     union {
    85         GPRReg m_src;
    86         int32_t m_immediate;
    87     };
    88     GPRReg m_dest;
    89 
    9074    // Indicates the type of additional recovery to be performed.
    9175    SpeculationRecoveryType m_type;
     76    // different recovery types may required different additional information here.
     77    GPRReg m_dest;
     78    GPRReg m_src;
    9279};
    9380
  • trunk/Source/JavaScriptCore/dfg/DFGOSRExitCompiler32_64.cpp

    r197994 r198024  
    5656        case SpeculativeAdd:
    5757            m_jit.sub32(recovery->src(), recovery->dest());
    58             break;
    59 
    60         case SpeculativeAddImmediate:
    61             m_jit.sub32(AssemblyHelpers::Imm32(recovery->immediate()), recovery->dest());
    6258            break;
    6359           
  • trunk/Source/JavaScriptCore/dfg/DFGOSRExitCompiler64.cpp

    r197994 r198024  
    6262            m_jit.or64(GPRInfo::tagTypeNumberRegister, recovery->dest());
    6363            break;
    64 
    65         case SpeculativeAddImmediate:
    66             m_jit.sub32(AssemblyHelpers::Imm32(recovery->immediate()), recovery->dest());
    67             m_jit.or64(GPRInfo::tagTypeNumberRegister, recovery->dest());
    68             break;
    6964           
    7065        case BooleanSpeculationCheck:
  • trunk/Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp

    r197994 r198024  
    32573257        if (node->child2()->isInt32Constant()) {
    32583258            SpeculateInt32Operand op1(this, node->child1());
    3259             GPRTemporary result(this, Reuse, op1);
    3260 
    3261             GPRReg gpr1 = op1.gpr();
    32623259            int32_t imm2 = node->child2()->asInt32();
    3263             GPRReg gprResult = result.gpr();
    32643260
    32653261            if (!shouldCheckOverflow(node->arithMode())) {
    3266                 m_jit.add32(Imm32(imm2), gpr1, gprResult);
    3267                 int32Result(gprResult, node);
     3262                GPRTemporary result(this, Reuse, op1);
     3263                m_jit.add32(Imm32(imm2), op1.gpr(), result.gpr());
     3264                int32Result(result.gpr(), node);
    32683265                return;
    32693266            }
    32703267
    3271             MacroAssembler::Jump check = m_jit.branchAdd32(MacroAssembler::Overflow, gpr1, Imm32(imm2), gprResult);
    3272             if (gpr1 == gprResult) {
    3273                 speculationCheck(Overflow, JSValueRegs(), 0, check,
    3274                     SpeculationRecovery(SpeculativeAddImmediate, gpr1, imm2));
    3275             } else
    3276                 speculationCheck(Overflow, JSValueRegs(), 0, check);
    3277 
    3278             int32Result(gprResult, node);
     3268            GPRTemporary result(this);
     3269            speculationCheck(Overflow, JSValueRegs(), 0, m_jit.branchAdd32(MacroAssembler::Overflow, op1.gpr(), Imm32(imm2), result.gpr()));
     3270
     3271            int32Result(result.gpr(), node);
    32793272            return;
    32803273        }
Note: See TracChangeset for help on using the changeset viewer.