aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorSimon Hausmann <simon.hausmann@digia.com>2013-04-15 11:25:09 +0200
committerSimon Hausmann <simon.hausmann@digia.com>2013-04-15 11:25:20 +0200
commitbec019b5fe35e1701c944eb340df458d5e3d1cdb (patch)
tree0236cec8dbf64fb3472388f40fd72e8f5b47a6ae /src
parentad04f0c856e09c9cc9df3ec1bbe8e4455508c1da (diff)
Fix loading of this value on 32-bit
Make sure to copy all 64-bits out of ctx->thisObject Change-Id: I9984f83f5f238177e75e469c574ef49ee5bb0665 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Diffstat (limited to 'src')
-rw-r--r--src/v4/qv4isel_masm.cpp4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/v4/qv4isel_masm.cpp b/src/v4/qv4isel_masm.cpp
index 97d3bead67..a9d41ca32e 100644
--- a/src/v4/qv4isel_masm.cpp
+++ b/src/v4/qv4isel_masm.cpp
@@ -824,8 +824,12 @@ void InstructionSelection::callValue(V4IR::Temp *value, V4IR::ExprList *args, V4
void InstructionSelection::loadThisObject(V4IR::Temp *temp)
{
+#if defined(VALUE_FITS_IN_REGISTER)
_as->loadPtr(Pointer(Assembler::ContextRegister, offsetof(ExecutionContext, thisObject)), Assembler::ReturnValueRegister);
_as->storeArgument(Assembler::ReturnValueRegister, temp);
+#else
+ _as->copyValue(temp, Pointer(Assembler::ContextRegister, offsetof(ExecutionContext, thisObject)));
+#endif
}
void InstructionSelection::loadConst(V4IR::Const *sourceConst, V4IR::Temp *targetTemp)