aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/qml/jit/qv4isel_masm_p.h11
1 files changed, 10 insertions, 1 deletions
diff --git a/src/qml/jit/qv4isel_masm_p.h b/src/qml/jit/qv4isel_masm_p.h
index f54b18d494..af518a0851 100644
--- a/src/qml/jit/qv4isel_masm_p.h
+++ b/src/qml/jit/qv4isel_masm_p.h
@@ -179,6 +179,15 @@ private:
{
if (IR::Temp *targetTemp = target->asTemp()) {
if (targetTemp->kind == IR::Temp::PhysicalRegister) {
+ if (IR::Temp *sourceTemp = source->asTemp()) {
+ if (sourceTemp->kind == IR::Temp::PhysicalRegister) {
+ _as->convertInt32ToDouble((Assembler::RegisterID) sourceTemp->index,
+ (Assembler::FPRegisterID) targetTemp->index);
+ } else {
+ _as->convertInt32ToDouble(_as->loadAddress(Assembler::ReturnValueRegister, sourceTemp),
+ (Assembler::FPRegisterID) targetTemp->index);
+ }
+ }
_as->convertInt32ToDouble(_as->toInt32Register(source, Assembler::ScratchRegister),
(Assembler::FPRegisterID) targetTemp->index);
return;
@@ -187,7 +196,7 @@ private:
_as->convertInt32ToDouble(_as->toInt32Register(source, Assembler::ScratchRegister),
Assembler::FPGpr0);
- _as->storeDouble(Assembler::FPGpr0, _as->loadAddress(Assembler::ScratchRegister, target));
+ _as->storeDouble(Assembler::FPGpr0, _as->loadAddress(Assembler::ReturnValueRegister, target));
}
void convertUIntToDouble(IR::Expr *source, IR::Expr *target)