Changeset 48830 in webkit


Ignore:
Timestamp:
Sep 28, 2009 1:42:15 PM (15 years ago)
Author:
oliver@apple.com
Message:

Hard dependency on SSE2 instruction set with JIT
https://bugs.webkit.org/show_bug.cgi?id=29779

Reviewed by Geoff Garen

Add floating point support checks to op_jfalse and op_jtrue, and
fix the logic for the slow case of op_add

Location:
trunk/JavaScriptCore
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/JavaScriptCore/ChangeLog

    r48827 r48830  
     12009-09-28  Oliver Hunt  <oliver@apple.com>
     2
     3        Reviewed by Geoff Garen.
     4
     5        Hard dependency on SSE2 instruction set with JIT
     6        https://bugs.webkit.org/show_bug.cgi?id=29779
     7
     8        Add floating point support checks to op_jfalse and op_jtrue, and
     9        fix the logic for the slow case of op_add
     10
     11        * jit/JITArithmetic.cpp:
     12        (JSC::JIT::emitSlow_op_add):
     13        * jit/JITOpcodes.cpp:
     14        (JSC::JIT::emit_op_jfalse):
     15        (JSC::JIT::emit_op_jtrue):
     16
    1172009-09-28  Yaar Schnitman  <yaar@chromium.org>
    218
  • trunk/JavaScriptCore/jit/JITArithmetic.cpp

    r48744 r48830  
    636636        linkSlowCase(iter); // overflow check
    637637
    638         if (!supportsFloatingPoint()) {
     638        if (!supportsFloatingPoint())
    639639            linkSlowCase(iter); // non-sse case
    640             return;
    641         }
    642 
    643         ResultType opType = op == op1 ? types.first() : types.second();
    644         if (!opType.definitelyIsNumber())
    645             linkSlowCase(iter); // double check
     640        else {
     641            ResultType opType = op == op1 ? types.first() : types.second();
     642            if (!opType.definitelyIsNumber())
     643                linkSlowCase(iter); // double check
     644        }
    646645    } else {
    647646        linkSlowCase(iter); // overflow check
  • trunk/JavaScriptCore/jit/JITOpcodes.cpp

    r48525 r48830  
    795795    addJump(jump(), target + 2);
    796796
    797     isNotInteger.link(this);
    798 
    799     addSlowCase(branch32(Above, regT1, Imm32(JSValue::LowestTag)));
    800 
    801     zeroDouble(fpRegT0);
    802     emitLoadDouble(cond, fpRegT1);
    803     addJump(branchDouble(DoubleEqual, fpRegT0, fpRegT1), target + 2);
    804    
     797    if (supportsFloatingPoint()) {
     798        isNotInteger.link(this);
     799
     800        addSlowCase(branch32(Above, regT1, Imm32(JSValue::LowestTag)));
     801
     802        zeroDouble(fpRegT0);
     803        emitLoadDouble(cond, fpRegT1);
     804        addJump(branchDouble(DoubleEqual, fpRegT0, fpRegT1), target + 2);
     805    } else
     806        addSlowCase(isNotInteger);
     807
    805808    isTrue.link(this);
    806809    isTrue2.link(this);
     
    833836    addJump(jump(), target + 2);
    834837
    835     isNotInteger.link(this);
    836 
    837     addSlowCase(branch32(Above, regT1, Imm32(JSValue::LowestTag)));
    838 
    839     zeroDouble(fpRegT0);
    840     emitLoadDouble(cond, fpRegT1);
    841     addJump(branchDouble(DoubleNotEqual, fpRegT0, fpRegT1), target + 2);
    842    
     838    if (supportsFloatingPoint()) {
     839        isNotInteger.link(this);
     840
     841        addSlowCase(branch32(Above, regT1, Imm32(JSValue::LowestTag)));
     842
     843        zeroDouble(fpRegT0);
     844        emitLoadDouble(cond, fpRegT1);
     845        addJump(branchDouble(DoubleNotEqual, fpRegT0, fpRegT1), target + 2);
     846    } else
     847        addSlowCase(isNotInteger);
     848
    843849    isFalse.link(this);
    844850    isFalse2.link(this);
Note: See TracChangeset for help on using the changeset viewer.