diff options
author | Ulf Hermann <ulf.hermann@qt.io> | 2021-01-27 10:07:28 +0100 |
---|---|---|
committer | Ulf Hermann <ulf.hermann@qt.io> | 2021-01-27 10:54:18 +0100 |
commit | b7bbdf7e7d13eddf0ba9145d2671ff13aca6000d (patch) | |
tree | ed09263364e4739e27d16da51c92b69e54a8801b /src/qml | |
parent | a34f92703333ce9eb6fae91891c34b478d73365f (diff) |
V4: Store instruction pointer before CmpIn
The "in" operator may throw an exception.
Change-Id: I7d0b6e2212ac6ec237fbf14719349f8e23810028
Reviewed-by: Andrei Golubev <andrei.golubev@qt.io>
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Diffstat (limited to 'src/qml')
-rw-r--r-- | src/qml/jit/qv4baselinejit.cpp | 1 | ||||
-rw-r--r-- | src/qml/jsruntime/qv4vme_moth.cpp | 1 |
2 files changed, 2 insertions, 0 deletions
diff --git a/src/qml/jit/qv4baselinejit.cpp b/src/qml/jit/qv4baselinejit.cpp index d329a5afec..5e6d843fbc 100644 --- a/src/qml/jit/qv4baselinejit.cpp +++ b/src/qml/jit/qv4baselinejit.cpp @@ -829,6 +829,7 @@ void BaselineJIT::generate_CmpStrictNotEqual(int lhs) { as->cmpStrictNotEqual(lh void BaselineJIT::generate_CmpIn(int lhs) { + STORE_IP(); STORE_ACC(); as->prepareCallWithArgCount(3); as->passAccumulatorAsArg(2); diff --git a/src/qml/jsruntime/qv4vme_moth.cpp b/src/qml/jsruntime/qv4vme_moth.cpp index 03cb69490e..03c0ed7e89 100644 --- a/src/qml/jsruntime/qv4vme_moth.cpp +++ b/src/qml/jsruntime/qv4vme_moth.cpp @@ -1210,6 +1210,7 @@ QV4::ReturnedValue VME::interpret(CppStackFrame *frame, ExecutionEngine *engine, MOTH_END_INSTR(CmpStrictNotEqual) MOTH_BEGIN_INSTR(CmpIn) + STORE_IP(); STORE_ACC(); acc = Runtime::In::call(engine, STACK_VALUE(lhs), accumulator); CHECK_EXCEPTION; |