diff options
Diffstat (limited to 'JavaScriptCore/assembler')
-rw-r--r-- | JavaScriptCore/assembler/MacroAssemblerARMv7.h | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/JavaScriptCore/assembler/MacroAssemblerARMv7.h b/JavaScriptCore/assembler/MacroAssemblerARMv7.h index 31a68d9..380d5f8 100644 --- a/JavaScriptCore/assembler/MacroAssemblerARMv7.h +++ b/JavaScriptCore/assembler/MacroAssemblerARMv7.h @@ -459,7 +459,13 @@ public: void load16(ImplicitAddress address, RegisterID dest) { - m_assembler.ldrh(dest, address.base, address.offset); + ARMThumbImmediate armImm = ARMThumbImmediate::makeUInt12(address.offset); + if (armImm.isValid()) + m_assembler.ldrh(dest, address.base, armImm); + else { + move(Imm32(address.offset), dataTempRegister); + m_assembler.ldrh(dest, address.base, dataTempRegister); + } } DataLabel32 store32WithAddressOffsetPatch(RegisterID src, Address address) |