diff options
author | Simon Hausmann <simon.hausmann@qt.io> | 2018-05-31 14:06:22 +0200 |
---|---|---|
committer | Simon Hausmann <simon.hausmann@qt.io> | 2018-06-27 10:04:28 +0000 |
commit | 0ec2c4720c47282109b618370bf8397bb1d13a56 (patch) | |
tree | 55cbcc6d4539fdfc262a360e24712fc95bd3a951 /src/qml/jsruntime/qv4runtime.cpp | |
parent | 1b35f7b706b97adbc1d8935b14144b51389c0484 (diff) |
Simplify storeElement runtime API
We can do the isStrict() check and throwTypeError() call in the runtime
function instead of doing it twice on the two call sites.
Change-Id: I70df3d7fe4333921a85c11b1573e234f7da2f47d
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Diffstat (limited to 'src/qml/jsruntime/qv4runtime.cpp')
-rw-r--r-- | src/qml/jsruntime/qv4runtime.cpp | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/src/qml/jsruntime/qv4runtime.cpp b/src/qml/jsruntime/qv4runtime.cpp index 48b5657c7f..bcedfa06b5 100644 --- a/src/qml/jsruntime/qv4runtime.cpp +++ b/src/qml/jsruntime/qv4runtime.cpp @@ -696,7 +696,7 @@ static Q_NEVER_INLINE bool setElementFallback(ExecutionEngine *engine, const Val return o->put(name, value); } -bool Runtime::method_storeElement(ExecutionEngine *engine, const Value &object, const Value &index, const Value &value) +void Runtime::method_storeElement(ExecutionEngine *engine, const Value &object, const Value &index, const Value &value) { uint idx = 0; if (index.asArrayIndex(idx)) { @@ -707,14 +707,15 @@ bool Runtime::method_storeElement(ExecutionEngine *engine, const Value &object, Heap::SimpleArrayData *s = o->arrayData.cast<Heap::SimpleArrayData>(); if (idx < s->values.size) { s->setData(engine, idx, value); - return true; + return; } } } } } - return setElementFallback(engine, object, index, value); + if (!setElementFallback(engine, object, index, value) && engine->currentStackFrame->v4Function->isStrict()) + engine->throwTypeError(); } ReturnedValue Runtime::method_getIterator(ExecutionEngine *engine, const Value &in, int iterator) |