aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/jsapi
diff options
context:
space:
mode:
authorLars Knoll <lars.knoll@digia.com>2013-09-05 13:22:23 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-09-11 13:01:50 +0200
commit6e8e5d16e16d6ee683a5c06a24f8f202ed5239ff (patch)
treefa8e710ad0ee4ff6cc9738fa717883c74d452b95 /src/qml/jsapi
parent736afb8e9b3694efb8ca1fa8f3a8eeeaef530da2 (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.cpp23
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();