Ignore:
Timestamp:
Apr 28, 2009, 6:24:00 PM (16 years ago)
Author:
[email protected]
Message:

Roll out r42969, due to hangs in build bot.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/JavaScriptCore/jit/JITArithmetic.cpp

    r42969 r42978  
    4545using namespace std;
    4646
    47 #if PLATFORM(MAC)
    48 
    49 static inline bool isSSE2Present()
    50 {
    51     return true; // All X86 Macs are guaranteed to support at least SSE2
    52 }
    53 
    54 #else
    55 
    56 static bool isSSE2Present()
    57 {
    58     static const int SSE2FeatureBit = 1 << 26;
    59     struct SSE2Check {
    60         SSE2Check()
    61         {
    62             int flags;
    63 #if COMPILER(MSVC)
    64             _asm {
    65                 mov eax, 1 // cpuid function 1 gives us the standard feature set
    66                 cpuid;
    67                 mov flags, edx;
    68             }
    69 #elif COMPILER(GCC)
    70             asm (
    71                  "movl $0x1, %%eax;"
    72                  "pushl %%ebx;"
    73                  "cpuid;"
    74                  "popl %%ebx;"
    75                  "movl %%edx, %0;"
    76                  : "=g" (flags)
    77                  :
    78                  : "%eax", "%ecx", "%edx"
    79                  );
    80 #else
    81             flags = 0;
    82 #endif
    83             present = (flags & SSE2FeatureBit) != 0;
    84         }
    85         bool present;
    86     };
    87     static SSE2Check check;
    88     return check.present;
    89 }
    90 
    91 #endif
    92 
    9347namespace JSC {
    9448
     
    149103    } else {
    150104        emitGetVirtualRegisters(op1, regT0, op2, regT2);
    151         if (isSSE2Present()) {
    152             Jump lhsIsInt = emitJumpIfImmediateInteger(regT0);
    153 #if USE(ALTERNATE_JSIMMEDIATE)
    154             addSlowCase(emitJumpIfNotImmediateNumber(regT0));
    155             m_assembler.movq_rr(regT0, X86::xmm0);
    156 #else
    157             emitJumpSlowCaseIfNotJSCell(regT0, op1);
    158             Structure* numberStructure = m_globalData->numberStructure.get();
    159             __ cmpl_im(reinterpret_cast<uintptr_t>(numberStructure), FIELD_OFFSET(JSCell, m_structure), regT0);
    160             addSlowCase(__ jne());
    161             __ movsd_mr(FIELD_OFFSET(JSNumberCell, m_value), regT0, X86::xmm0);
    162 #endif
    163             __ cvttsd2si_rr(X86::xmm0, regT0);
    164             addSlowCase(branch32(Equal, regT0, Imm32(0x80000000)));
    165             add32(regT0, regT0);
    166             addSlowCase(__ jo());
    167             lhsIsInt.link(this);
    168         } else
    169             emitJumpSlowCaseIfNotImmediateInteger(regT0);
     105        emitJumpSlowCaseIfNotImmediateInteger(regT0);
    170106        emitJumpSlowCaseIfNotImmediateInteger(regT2);
    171107        emitFastArithImmToInt(regT2);
     
    188124    emitPutVirtualRegister(result);
    189125}
    190 void JIT::compileFastArithSlow_op_rshift(unsigned result, unsigned op1, unsigned op2, Vector<SlowCaseEntry>::iterator& iter)
     126void JIT::compileFastArithSlow_op_rshift(unsigned result, unsigned, unsigned op2, Vector<SlowCaseEntry>::iterator& iter)
    191127{
    192128    linkSlowCase(iter);
     
    194130        emitPutJITStubArgFromVirtualRegister(op2, 2, regT2);
    195131    else {
    196         if (isSSE2Present()) {
    197             linkSlowCase(iter);
    198             linkSlowCase(iter);
    199             linkSlowCase(iter);
    200 #if !USE(ALTERNATE_JSIMMEDIATE)
    201             linkSlowCase(iter);
    202 #endif
    203             emitGetVirtualRegister(op1, regT0);
    204         } else
    205             linkSlowCase(iter);
     132        linkSlowCase(iter);
    206133        emitPutJITStubArg(regT2, 2);
    207134    }
     
    673600typedef X86Assembler::XMMRegisterID XMMRegisterID;
    674601
     602#if PLATFORM(MAC)
     603
     604static inline bool isSSE2Present()
     605{
     606    return true; // All X86 Macs are guaranteed to support at least SSE2
     607}
     608
     609#else
     610
     611static bool isSSE2Present()
     612{
     613    static const int SSE2FeatureBit = 1 << 26;
     614    struct SSE2Check {
     615        SSE2Check()
     616        {
     617            int flags;
     618#if COMPILER(MSVC)
     619            _asm {
     620                mov eax, 1 // cpuid function 1 gives us the standard feature set
     621                cpuid;
     622                mov flags, edx;
     623            }
     624#elif COMPILER(GCC)
     625            asm (
     626                "movl $0x1, %%eax;"
     627                "pushl %%ebx;"
     628                "cpuid;"
     629                "popl %%ebx;"
     630                "movl %%edx, %0;"
     631                : "=g" (flags)
     632                :
     633                : "%eax", "%ecx", "%edx"
     634            );
     635#else
     636            flags = 0;
     637#endif
     638            present = (flags & SSE2FeatureBit) != 0;
     639        }
     640        bool present;
     641    };
     642    static SSE2Check check;
     643    return check.present;
     644}
     645
     646#endif
    675647
    676648void JIT::compileBinaryArithOp(OpcodeID opcodeID, unsigned dst, unsigned src1, unsigned src2, OperandTypes types)
Note: See TracChangeset for help on using the changeset viewer.