9da807d
From ac79fc4ad54fd0cfaf7963c41bb9cd982a76ba4f Mon Sep 17 00:00:00 2001
8bf2da8
From: Ulf Hermann <ulf.hermann@qt.io>
8bf2da8
Date: Wed, 15 Mar 2023 08:59:43 +0100
9da807d
Subject: [PATCH 25/31] JIT: Add missing {STORE|LOAD}_ACC() to
0134d56
 CreateCallContext
8bf2da8
8bf2da8
We cannot assume anything about the accumulator register after calling
8bf2da8
PushCallContext::call(). Also add a note about not needing to re-load
8bf2da8
the accumulator on ThrowException.
8bf2da8
8bf2da8
Pick-to: 6.5 6.2 5.15
8bf2da8
Fixes: QTBUG-111935
8bf2da8
Change-Id: I7196585e1d2697c215f4fe87d8d7ac9b98b622a3
0134d56
Reviewed-by: <carl@carlschwan.eu>
0134d56
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
0134d56
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
0134d56
(cherry picked from commit 15ec024152a1d1d99a4934f7b2408e7af7b2552a)
8bf2da8
---
8bf2da8
 src/qml/jit/qv4baselinejit.cpp | 4 ++++
8bf2da8
 1 file changed, 4 insertions(+)
8bf2da8
8bf2da8
diff --git a/src/qml/jit/qv4baselinejit.cpp b/src/qml/jit/qv4baselinejit.cpp
0134d56
index 45150cfffd..5ad53faf95 100644
8bf2da8
--- a/src/qml/jit/qv4baselinejit.cpp
8bf2da8
+++ b/src/qml/jit/qv4baselinejit.cpp
0134d56
@@ -540,6 +540,8 @@ void BaselineJIT::generate_ThrowException()
8bf2da8
     as->passEngineAsArg(0);
8bf2da8
     BASELINEJIT_GENERATE_RUNTIME_CALL(ThrowException, CallResultDestination::Ignore);
8bf2da8
     as->gotoCatchException();
8bf2da8
+
8bf2da8
+    // LOAD_ACC(); <- not needed here since it would be unreachable.
8bf2da8
 }
8bf2da8
 
8bf2da8
 void BaselineJIT::generate_GetException() { as->getException(); }
0134d56
@@ -547,9 +549,11 @@ void BaselineJIT::generate_SetException() { as->setException(); }
8bf2da8
 
8bf2da8
 void BaselineJIT::generate_CreateCallContext()
8bf2da8
 {
8bf2da8
+    STORE_ACC();
8bf2da8
     as->prepareCallWithArgCount(1);
8bf2da8
     as->passCppFrameAsArg(0);
8bf2da8
     BASELINEJIT_GENERATE_RUNTIME_CALL(PushCallContext, CallResultDestination::Ignore);
8bf2da8
+    LOAD_ACC();
8bf2da8
 }
8bf2da8
 
8bf2da8
 void BaselineJIT::generate_PushCatchContext(int index, int name) { as->pushCatchContext(index, name); }
8bf2da8
-- 
9da807d
2.43.0
8bf2da8