aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/compiler/qv4isel_masm_p.h
diff options
context:
space:
mode:
authorSimon Hausmann <simon.hausmann@digia.com>2013-09-11 12:25:07 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-09-12 21:52:43 +0200
commitc1821de0e6ef21f86623572fd54f5cc5451b6077 (patch)
treed5af56ffffbc9774cdd83fea03e7999b8a61e02c /src/qml/compiler/qv4isel_masm_p.h
parenta30799396472f2db5978036a64dcb4a4a74cd0b3 (diff)
Fix ReturnedValue support on ia32 and arm
The 64-bit value is passed in eax:edx and r0:r1 Change-Id: I9a8a7d8ae41f14780958351ecedea2d117f77d85 Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Diffstat (limited to 'src/qml/compiler/qv4isel_masm_p.h')
-rw-r--r--src/qml/compiler/qv4isel_masm_p.h18
1 files changed, 17 insertions, 1 deletions
diff --git a/src/qml/compiler/qv4isel_masm_p.h b/src/qml/compiler/qv4isel_masm_p.h
index aad0903413..a09097f85f 100644
--- a/src/qml/compiler/qv4isel_masm_p.h
+++ b/src/qml/compiler/qv4isel_masm_p.h
@@ -614,6 +614,23 @@ public:
{
store64(ReturnValueRegister, dest);
}
+#elif defined(Q_PROCESSOR_X86)
+ void storeReturnValue(const Pointer &dest)
+ {
+ Pointer destination = dest;
+ store32(JSC::X86Registers::eax, destination);
+ destination.offset += 4;
+ store32(JSC::X86Registers::edx, destination);
+ }
+#elif defined(Q_PROCESSOR_ARM)
+ void storeReturnValue(const Pointer &dest)
+ {
+ Pointer destination = dest;
+ store32(JSC::ARMRegisters::r0, destination);
+ destination.offset += 4;
+ store32(JSC::ARMRegisters::r1, destination);
+ }
+#endif
void storeReturnValue(V4IR::Temp *temp)
{
@@ -622,7 +639,6 @@ public:
Pointer addr = loadTempAddress(ScratchRegister, temp);
storeReturnValue(addr);
}
-#endif
void storeReturnValue(VoidType)
{