summaryrefslogtreecommitdiffstats
path: root/JavaScriptCore/assembler/MacroAssemblerARMv7.h
diff options
context:
space:
mode:
Diffstat (limited to 'JavaScriptCore/assembler/MacroAssemblerARMv7.h')
-rw-r--r--JavaScriptCore/assembler/MacroAssemblerARMv7.h8
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)