aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/jit/qv4baselinejit.cpp
diff options
context:
space:
mode:
authorLars Knoll <lars.knoll@qt.io>2018-06-25 11:53:41 +0200
committerLars Knoll <lars.knoll@qt.io>2018-07-03 08:08:23 +0000
commit6f79b7519f10ba24485769cf9bf2922e002bd46a (patch)
treef496f398e8dc452bfb876233244658a6ef911e47 /src/qml/jit/qv4baselinejit.cpp
parentb262605c806a6572f31cf9a50aab7b0e10cbc951 (diff)
Add a newTarget parameter to the Construct runtime methods
This is required to be able to support the super() call. Change-Id: I9998680341d701727ac1697187ad33481bdde422 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Diffstat (limited to 'src/qml/jit/qv4baselinejit.cpp')
-rw-r--r--src/qml/jit/qv4baselinejit.cpp16
1 files changed, 10 insertions, 6 deletions
diff --git a/src/qml/jit/qv4baselinejit.cpp b/src/qml/jit/qv4baselinejit.cpp
index ed98ca5f4c..23df04f127 100644
--- a/src/qml/jit/qv4baselinejit.cpp
+++ b/src/qml/jit/qv4baselinejit.cpp
@@ -517,9 +517,11 @@ void BaselineJIT::generate_CallWithSpread(int func, int thisObject, int argc, in
void BaselineJIT::generate_Construct(int func, int argc, int argv)
{
STORE_IP();
- as->prepareCallWithArgCount(4);
- as->passInt32AsArg(argc, 3);
- as->passRegAsArg(argv, 2);
+ STORE_ACC();
+ as->prepareCallWithArgCount(5);
+ as->passInt32AsArg(argc, 4);
+ as->passRegAsArg(argv, 3);
+ as->passAccumulatorAsArg(2);
as->passRegAsArg(func, 1);
as->passEngineAsArg(0);
JIT_GENERATE_RUNTIME_CALL(Runtime::method_construct, Assembler::ResultInAccumulator);
@@ -529,9 +531,11 @@ void BaselineJIT::generate_Construct(int func, int argc, int argv)
void BaselineJIT::generate_ConstructWithSpread(int func, int argc, int argv)
{
STORE_IP();
- as->prepareCallWithArgCount(4);
- as->passInt32AsArg(argc, 3);
- as->passRegAsArg(argv, 2);
+ STORE_ACC();
+ as->prepareCallWithArgCount(5);
+ as->passInt32AsArg(argc, 4);
+ as->passRegAsArg(argv, 3);
+ as->passAccumulatorAsArg(2);
as->passRegAsArg(func, 1);
as->passEngineAsArg(0);
JIT_GENERATE_RUNTIME_CALL(Runtime::method_constructWithSpread, Assembler::ResultInAccumulator);