diff options
author | Lars Knoll <lars.knoll@digia.com> | 2013-09-05 13:22:23 +0200 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-09-11 13:01:50 +0200 |
commit | 6e8e5d16e16d6ee683a5c06a24f8f202ed5239ff (patch) | |
tree | fa8e710ad0ee4ff6cc9738fa717883c74d452b95 /src/qml/jsapi | |
parent | 736afb8e9b3694efb8ca1fa8f3a8eeeaef530da2 (diff) |
Move CallData onto the JS stack
Change-Id: I22e853acfd2da337344b581bb0412c5f9930c510
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Diffstat (limited to 'src/qml/jsapi')
-rw-r--r-- | src/qml/jsapi/qjsvalue.cpp | 23 |
1 files changed, 12 insertions, 11 deletions
diff --git a/src/qml/jsapi/qjsvalue.cpp b/src/qml/jsapi/qjsvalue.cpp index b737ee0073..2640ea5d1c 100644 --- a/src/qml/jsapi/qjsvalue.cpp +++ b/src/qml/jsapi/qjsvalue.cpp @@ -55,6 +55,7 @@ #include "private/qv8engine_p.h" #include <private/qv4mm_p.h> #include <private/qv4exception_p.h> +#include <private/qv4scopedvalue_p.h> QV4::Value QJSValuePrivate::getValue(QV4::ExecutionEngine *e) { @@ -505,20 +506,20 @@ QJSValue QJSValue::call(const QJSValueList &args) ExecutionEngine *engine = d->engine; assert(engine); - CALLDATA(args.length()); - d.thisObject = Value::fromObject(engine->globalObject); + ScopedCallData callData(engine, args.length()); + callData->thisObject = Value::fromObject(engine->globalObject); for (int i = 0; i < args.size(); ++i) { if (!args.at(i).d->checkEngine(engine)) { qWarning("QJSValue::call() failed: cannot call function with argument created in a different engine"); return QJSValue(); } - d.args[i] = args.at(i).d->getValue(engine); + callData->args[i] = args.at(i).d->getValue(engine); } Value result; QV4::ExecutionContext *ctx = engine->current; try { - result = f->call(d); + result = f->call(callData); } catch (Exception &e) { e.accept(ctx); result = e.value(); @@ -561,20 +562,20 @@ QJSValue QJSValue::callWithInstance(const QJSValue &instance, const QJSValueList return QJSValue(); } - CALLDATA(args.size()); - d.thisObject = instance.d->getValue(engine); + ScopedCallData callData(engine, args.size()); + callData->thisObject = instance.d->getValue(engine); for (int i = 0; i < args.size(); ++i) { if (!args.at(i).d->checkEngine(engine)) { qWarning("QJSValue::call() failed: cannot call function with argument created in a different engine"); return QJSValue(); } - d.args[i] = args.at(i).d->getValue(engine); + callData->args[i] = args.at(i).d->getValue(engine); } Value result; QV4::ExecutionContext *ctx = engine->current; try { - result = f->call(d); + result = f->call(callData); } catch (Exception &e) { e.accept(ctx); result = e.value(); @@ -610,19 +611,19 @@ QJSValue QJSValue::callAsConstructor(const QJSValueList &args) ExecutionEngine *engine = d->engine; assert(engine); - CALLDATA(args.size()); + ScopedCallData callData(engine, args.size()); for (int i = 0; i < args.size(); ++i) { if (!args.at(i).d->checkEngine(engine)) { qWarning("QJSValue::callAsConstructor() failed: cannot construct function with argument created in a different engine"); return QJSValue(); } - d.args[i] = args.at(i).d->getValue(engine); + callData->args[i] = args.at(i).d->getValue(engine); } Value result; QV4::ExecutionContext *ctx = engine->current; try { - result = f->construct(d); + result = f->construct(callData); } catch (Exception &e) { e.accept(ctx); result = e.value(); |