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/MacroAssemblerARM.h

    r70642 r72481  
    229229    }
    230230
     231    void countLeadingZeros32(RegisterID src, RegisterID dest)
     232    {
     233#if WTF_ARM_ARCH_AT_LEAST(5)
     234        m_assembler.clz_r(dest, src);
     235#else
     236        UNUSED_PARAM(src);
     237        UNUSED_PARAM(dest);
     238        ASSERT_NOT_REACHED();
     239#endif
     240    }
     241
    231242    void load8(ImplicitAddress address, RegisterID dest)
    232243    {
     
    709720        load32(left.m_ptr, ARMRegisters::S1);
    710721        return branch32(cond, ARMRegisters::S1, right);
     722    }
     723
     724    void relativeTableJump(RegisterID index, int scale)
     725    {
     726        ASSERT(scale >= 0 && scale <= 31);
     727        m_assembler.add_r(ARMRegisters::pc, ARMRegisters::pc, m_assembler.lsl(index, scale));
     728
     729        // NOP the default prefetching
     730        m_assembler.mov_r(ARMRegisters::r0, ARMRegisters::r0);
    711731    }
    712732
Note: See TracChangeset for help on using the changeset viewer.