Ignore:
Timestamp:
May 1, 2011, 1:26:42 PM (14 years ago)
Author:
[email protected]
Message:

2011-05-01 Chao-ying Fu <[email protected]>

Reviewed by Eric Seidel.

Fix MIPS build due to the split of "Condition" enum
https://bugs.webkit.org/show_bug.cgi?id=59407

  • assembler/MIPSAssembler.h: (JSC::MIPSAssembler::debugOffset):
  • assembler/MacroAssemblerMIPS.h: (JSC::MacroAssemblerMIPS::branch32): (JSC::MacroAssemblerMIPS::compare32):
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/assembler/MacroAssemblerMIPS.h

    r84399 r85429  
    915915    Jump branch32(RelationalCondition cond, RegisterID left, RegisterID right)
    916916    {
    917         if (cond == Equal || cond == Zero)
     917        if (cond == Equal)
    918918            return branchEqual(left, right);
    919         if (cond == NotEqual || cond == NonZero)
     919        if (cond == NotEqual)
    920920            return branchNotEqual(left, right);
    921921        if (cond == Above) {
     
    950950            m_assembler.slt(cmpTempRegister, right, left);
    951951            return branchEqual(cmpTempRegister, MIPSRegisters::zero);
    952         }
    953         if (cond == Overflow) {
    954             /*
    955                 xor     cmpTemp, left, right
    956                 bgez    No_overflow, cmpTemp    # same sign bit -> no overflow
    957                 nop
    958                 subu    cmpTemp, left, right
    959                 xor     cmpTemp, cmpTemp, left
    960                 bgez    No_overflow, cmpTemp    # same sign bit -> no overflow
    961                 nop
    962                 b       Overflow
    963                 nop
    964                 nop
    965                 nop
    966                 nop
    967                 nop
    968               No_overflow:
    969             */
    970             m_assembler.xorInsn(cmpTempRegister, left, right);
    971             m_assembler.bgez(cmpTempRegister, 11);
    972             m_assembler.nop();
    973             m_assembler.subu(cmpTempRegister, left, right);
    974             m_assembler.xorInsn(cmpTempRegister, cmpTempRegister, left);
    975             m_assembler.bgez(cmpTempRegister, 7);
    976             m_assembler.nop();
    977             return jump();
    978         }
    979         if (cond == Signed) {
    980             m_assembler.subu(cmpTempRegister, left, right);
    981             // Check if the result is negative.
    982             m_assembler.slt(cmpTempRegister, cmpTempRegister,
    983                             MIPSRegisters::zero);
    984             return branchNotEqual(cmpTempRegister, MIPSRegisters::zero);
    985952        }
    986953        ASSERT(0);
     
    13611328    void compare32(RelationalCondition cond, RegisterID left, RegisterID right, RegisterID dest)
    13621329    {
    1363         if (cond == Equal || cond == Zero) {
     1330        if (cond == Equal) {
    13641331            m_assembler.xorInsn(dest, left, right);
    13651332            m_assembler.sltiu(dest, dest, 1);
    1366         } else if (cond == NotEqual || cond == NonZero) {
     1333        } else if (cond == NotEqual) {
    13671334            m_assembler.xorInsn(dest, left, right);
    13681335            m_assembler.sltu(dest, MIPSRegisters::zero, dest);
     
    13871354            m_assembler.slt(dest, right, left);
    13881355            m_assembler.xori(dest, dest, 1);
    1389         } else if (cond == Overflow) {
    1390             /*
    1391                 xor     cmpTemp, left, right
    1392                 bgez    Done, cmpTemp   # same sign bit -> no overflow
    1393                 move    dest, 0
    1394                 subu    cmpTemp, left, right
    1395                 xor     cmpTemp, cmpTemp, left # diff sign bit -> overflow
    1396                 slt     dest, cmpTemp, 0
    1397               Done:
    1398             */
    1399             m_assembler.xorInsn(cmpTempRegister, left, right);
    1400             m_assembler.bgez(cmpTempRegister, 4);
    1401             m_assembler.move(dest, MIPSRegisters::zero);
    1402             m_assembler.subu(cmpTempRegister, left, right);
    1403             m_assembler.xorInsn(cmpTempRegister, cmpTempRegister, left);
    1404             m_assembler.slt(dest, cmpTempRegister, MIPSRegisters::zero);
    1405         } else if (cond == Signed) {
    1406             m_assembler.subu(dest, left, right);
    1407             // Check if the result is negative.
    1408             m_assembler.slt(dest, dest, MIPSRegisters::zero);
    14091356        }
    14101357    }
Note: See TracChangeset for help on using the changeset viewer.