diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/qml/jit/qv4assembler_p.h | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/src/qml/jit/qv4assembler_p.h b/src/qml/jit/qv4assembler_p.h index 9d2d6c5ca0..32f709c5d2 100644 --- a/src/qml/jit/qv4assembler_p.h +++ b/src/qml/jit/qv4assembler_p.h @@ -551,9 +551,11 @@ public: void storeUInt32ReturnValue(RegisterID dest) { - Pointer tmp(StackPointerRegister, -int(sizeof(QV4::Value))); + subPtr(TrustedImm32(sizeof(QV4::Value)), StackPointerRegister); + Pointer tmp(StackPointerRegister, 0); storeReturnValue(tmp); toUInt32Register(tmp, dest); + addPtr(TrustedImm32(sizeof(QV4::Value)), StackPointerRegister); } void storeReturnValue(FPRegisterID dest) @@ -562,10 +564,16 @@ public: move(TrustedImm64(QV4::Value::NaNEncodeMask), ScratchRegister); xor64(ScratchRegister, ReturnValueRegister); move64ToDouble(ReturnValueRegister, dest); +#elif defined(Q_PROCESSOR_ARM) + moveIntsToDouble(JSC::ARMRegisters::r0, JSC::ARMRegisters::r1, dest, FPGpr0); +#elif defined(Q_PROCESSOR_X86) + moveIntsToDouble(JSC::X86Registers::eax, JSC::X86Registers::edx, dest, FPGpr0); #else - Pointer tmp(StackPointerRegister, -int(sizeof(QV4::Value))); + subPtr(TrustedImm32(sizeof(QV4::Value)), StackPointerRegister); + Pointer tmp(StackPointerRegister, 0); storeReturnValue(tmp); loadDouble(tmp, dest); + addPtr(TrustedImm32(sizeof(QV4::Value)), StackPointerRegister); #endif } |