diff options
author | Lars Knoll <lars.knoll@qt.io> | 2018-06-25 11:53:41 +0200 |
---|---|---|
committer | Lars Knoll <lars.knoll@qt.io> | 2018-07-03 08:08:23 +0000 |
commit | 6f79b7519f10ba24485769cf9bf2922e002bd46a (patch) | |
tree | f496f398e8dc452bfb876233244658a6ef911e47 /src/qml/jit | |
parent | b262605c806a6572f31cf9a50aab7b0e10cbc951 (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')
-rw-r--r-- | src/qml/jit/qv4baselinejit.cpp | 16 |
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); |