diff options
author | Lars Knoll <lars.knoll@qt.io> | 2018-06-06 14:48:24 +0200 |
---|---|---|
committer | Lars Knoll <lars.knoll@qt.io> | 2018-06-21 19:43:24 +0000 |
commit | 0562ece42df80cd3ffe3c3fe6b2097202fe65500 (patch) | |
tree | 978c370a5a6a8579cabdb2265f4fa534e11ad186 /src/qml/jit/qv4baselinejit.cpp | |
parent | 5454b37f308e78e240ac19947121fae344cda606 (diff) |
Unify DeleteMember and DeleteSubscript instructions
The delete operator is rarely used, so it's simpler to
unify these into one DeleteProperty instruction.
Change-Id: I8c0d4455b35efb03db2ab0010df70030d774a6ae
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Diffstat (limited to 'src/qml/jit/qv4baselinejit.cpp')
-rw-r--r-- | src/qml/jit/qv4baselinejit.cpp | 33 |
1 files changed, 4 insertions, 29 deletions
diff --git a/src/qml/jit/qv4baselinejit.cpp b/src/qml/jit/qv4baselinejit.cpp index b994d38c2b..ac6fc976f4 100644 --- a/src/qml/jit/qv4baselinejit.cpp +++ b/src/qml/jit/qv4baselinejit.cpp @@ -710,35 +710,10 @@ void BaselineJIT::generate_DestructureRestElement() as->checkException(); } - - -static ReturnedValue deleteMemberHelper(QV4::Function *function, const QV4::Value &base, int member) -{ - auto engine = function->internalClass->engine; - if (!Runtime::method_deleteMember(engine, base, member)) { - if (function->isStrict()) - engine->throwTypeError(); - return Encode(false); - } else { - return Encode(true); - } -} - -void BaselineJIT::generate_DeleteMember(int member, int base) -{ - STORE_IP(); - as->prepareCallWithArgCount(3); - as->passInt32AsArg(member, 2); - as->passRegAsArg(base, 1); - as->passFunctionAsArg(0); - JIT_GENERATE_RUNTIME_CALL(deleteMemberHelper, Assembler::ResultInAccumulator); - as->checkException(); -} - -static ReturnedValue deleteSubscriptHelper(QV4::Function *function, const QV4::Value &base, const QV4::Value &index) +static ReturnedValue deletePropertyHelper(QV4::Function *function, const QV4::Value &base, const QV4::Value &index) { auto engine = function->internalClass->engine; - if (!Runtime::method_deleteElement(engine, base, index)) { + if (!Runtime::method_deleteProperty(engine, base, index)) { if (function->isStrict()) engine->throwTypeError(); return Encode(false); @@ -747,14 +722,14 @@ static ReturnedValue deleteSubscriptHelper(QV4::Function *function, const QV4::V } } -void BaselineJIT::generate_DeleteSubscript(int base, int index) +void BaselineJIT::generate_DeleteProperty(int base, int index) { STORE_IP(); as->prepareCallWithArgCount(3); as->passRegAsArg(index, 2); as->passRegAsArg(base, 1); as->passFunctionAsArg(0); - JIT_GENERATE_RUNTIME_CALL(deleteSubscriptHelper, Assembler::ResultInAccumulator); + JIT_GENERATE_RUNTIME_CALL(deletePropertyHelper, Assembler::ResultInAccumulator); as->checkException(); } |