Ignore:
Timestamp:
Nov 20, 2010, 2:02:36 PM (15 years ago)
Author:
[email protected]
Message:

2010-11-20 Gabor Loki <[email protected]>

Reviewed by Gavin Barraclough.

Support JIT_OPTIMIZE_MOD on Thumb-2
https://bugs.webkit.org/show_bug.cgi?id=49432

Rewrite the soft modulo operation into macroassembler form, and move it
to JSValue32_64 section.
Add support for soft modulo on Thumb-2 JIT also.

  • assembler/ARMv7Assembler.h: (JSC::ARMv7Assembler::clz):
  • assembler/MacroAssemblerARM.h: (JSC::MacroAssemblerARM::countLeadingZeros32): (JSC::MacroAssemblerARM::relativeTableJump):
  • assembler/MacroAssemblerARMv7.h: (JSC::MacroAssemblerARMv7::countLeadingZeros32): (JSC::MacroAssemblerARMv7::relativeTableJump):
  • jit/JITArithmetic.cpp: (JSC::JIT::emit_op_mod):
  • jit/JITOpcodes.cpp: (JSC::JIT::privateCompileCTIMachineTrampolines):
  • jit/JITOpcodes32_64.cpp: (JSC::JIT::softModulo):
  • jit/JITStubs.cpp: (JSC::JITThunks::JITThunks):
  • wtf/Platform.h:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/JavaScriptCore/assembler/MacroAssemblerARMv7.h

    r69743 r72481  
    221221    }
    222222
     223    void countLeadingZeros32(RegisterID src, RegisterID dest)
     224    {
     225        m_assembler.clz(dest, src);
     226    }
     227
    223228    void lshift32(RegisterID shift_amount, RegisterID dest)
    224229    {
     
    10751080    }
    10761081   
     1082    void relativeTableJump(RegisterID index, int scale)
     1083    {
     1084        ASSERT(scale >= 0 && scale <= 31);
     1085
     1086        // dataTempRegister will point after the jump if index register contains zero
     1087        move(ARMRegisters::pc, dataTempRegister);
     1088        m_assembler.add(dataTempRegister, dataTempRegister, ARMThumbImmediate::makeEncodedImm(9));
     1089
     1090        ShiftTypeAndAmount shift(SRType_LSL, scale);
     1091        m_assembler.add(dataTempRegister, dataTempRegister, index, shift);
     1092        jump(dataTempRegister);
     1093    }
    10771094
    10781095    // Miscellaneous operations:
Note: See TracChangeset for help on using the changeset viewer.