aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/compiler/qv4isel_masm_p.h
diff options
context:
space:
mode:
authorPetr Nejedly <[email protected]>2013-09-30 23:23:25 -0700
committerThe Qt Project <[email protected]>2013-10-03 14:24:39 +0200
commit72a970760bd72adb6de321b4006f1d8419dcbb9f (patch)
tree6d6bcac0f815b0dd1bbc01b6e90add1036229970 /src/qml/compiler/qv4isel_masm_p.h
parent81fb6412cefc9245205478ecfb99fb7314bcff96 (diff)
Get lookups working (somehow) on ARM
Edit(Simon): This is a workaround for the register clash on ARM. r0 (ReturnValueRegister) is also used to pass the first argument, therefore we can't use it as "temporary" register for the duration of the parameter setup. Temporarily allocate r8 for now until we have constraints like these properly propagated into the register allocator. Change-Id: Iae266672856dea247b720367b8e8393333622e4e Reviewed-by: Simon Hausmann <[email protected]>
Diffstat (limited to 'src/qml/compiler/qv4isel_masm_p.h')
-rw-r--r--src/qml/compiler/qv4isel_masm_p.h8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/qml/compiler/qv4isel_masm_p.h b/src/qml/compiler/qv4isel_masm_p.h
index 0ee363ff02..013c2ef8ed 100644
--- a/src/qml/compiler/qv4isel_masm_p.h
+++ b/src/qml/compiler/qv4isel_masm_p.h
@@ -1505,7 +1505,13 @@ private:
template <typename Retval, typename Arg1, typename Arg2>
void generateLookupCall(Retval retval, uint index, uint getterSetterOffset, Arg1 arg1, Arg2 arg2)
{
- Assembler::Pointer lookupAddr(Assembler::ReturnValueRegister, index * sizeof(QV4::Lookup));
+ Assembler::RegisterID lookupRegister;
+#if CPU(ARM)
+ lookupRegister = JSC::ARMRegisters::r8;
+#else
+ lookupRegister = Assembler::ReturnValueRegister;
+#endif
+ Assembler::Pointer lookupAddr(lookupRegister, index * sizeof(QV4::Lookup));
Assembler::Address getterSetter = lookupAddr;
getterSetter.offset += getterSetterOffset;