diff options
author | Petr Nejedly <[email protected]> | 2013-09-30 23:23:25 -0700 |
---|---|---|
committer | The Qt Project <[email protected]> | 2013-10-03 14:24:39 +0200 |
commit | 72a970760bd72adb6de321b4006f1d8419dcbb9f (patch) | |
tree | 6d6bcac0f815b0dd1bbc01b6e90add1036229970 /src/qml/compiler/qv4isel_masm_p.h | |
parent | 81fb6412cefc9245205478ecfb99fb7314bcff96 (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.h | 8 |
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; |