aboutsummaryrefslogtreecommitdiffstats
path: root/src/3rdparty
diff options
context:
space:
mode:
authorErik Verbruggen <erik.verbruggen@digia.com>2014-06-05 14:13:39 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2014-06-05 22:10:18 +0200
commitd8b276a59402cbbe6d070ba38805350e7f3dd8a1 (patch)
tree25502a0b751e212643eb4b8da3c05b4aa7c565b5 /src/3rdparty
parentec8f1ad27ebee154b3c4869922b953a432f9d944 (diff)
V4 Yarr JIT: push/pop addressTempRegister.
Change 6572d4e50d73ac60a8974d07de74c27a7f99ebef moved the addressTempRegister from r3 to r10, so that calculated calls would not overwrite the fourth argument of a call. However, JSC's Yarr JIT might also use it for certain loads, so it also needs to save r10. Task-number: QTBUG-39289 Change-Id: I0a4e725b6b11ab5e772330662049668bed009c05 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Diffstat (limited to 'src/3rdparty')
-rw-r--r--src/3rdparty/masm/yarr/YarrJIT.cpp2
1 files changed, 2 insertions, 0 deletions
diff --git a/src/3rdparty/masm/yarr/YarrJIT.cpp b/src/3rdparty/masm/yarr/YarrJIT.cpp
index 783a869b5a..94a72a57c7 100644
--- a/src/3rdparty/masm/yarr/YarrJIT.cpp
+++ b/src/3rdparty/masm/yarr/YarrJIT.cpp
@@ -2561,6 +2561,7 @@ class YarrGenerator : private MacroAssembler {
#if CPU(ARM_TRADITIONAL)
push(ARMRegisters::r8); // scratch register
#endif
+ push(addressTempRegister);
if (compileMode == IncludeSubpatterns)
move(ARMRegisters::r3, output);
#elif CPU(SH4)
@@ -2588,6 +2589,7 @@ class YarrGenerator : private MacroAssembler {
pop(X86Registers::ebx);
pop(X86Registers::ebp);
#elif CPU(ARM)
+ pop(addressTempRegister);
#if CPU(ARM_TRADITIONAL)
pop(ARMRegisters::r8); // scratch register
#endif