Ignore:
Timestamp:
Jun 2, 2010, 1:56:16 PM (15 years ago)
Author:
[email protected]
Message:

https://bugs.webkit.org/show_bug.cgi?id=40011

Reviewed by Gavin Barraclough.

Thumb-2 build fix: The offset parameter of ldrh should be encoded as an
imm12 immediate constant in load16. If it is not fit in the instruction
a temporary register has to be used.

  • assembler/MacroAssemblerARMv7.h:

(JSC::MacroAssemblerARMv7::load16):

File:
1 edited

Legend:

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

    r58904 r60577  
    460460    void load16(ImplicitAddress address, RegisterID dest)
    461461    {
    462         m_assembler.ldrh(dest, address.base, address.offset);
     462        ARMThumbImmediate armImm = ARMThumbImmediate::makeUInt12(address.offset);
     463        if (armImm.isValid())
     464            m_assembler.ldrh(dest, address.base, armImm);
     465        else {
     466            move(Imm32(address.offset), dataTempRegister);
     467            m_assembler.ldrh(dest, address.base, dataTempRegister);
     468        }
    463469    }
    464470
Note: See TracChangeset for help on using the changeset viewer.