aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/jsruntime/qv4runtime.cpp
diff options
context:
space:
mode:
authorLars Knoll <lars.knoll@digia.com>2013-09-09 15:10:03 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-09-12 21:52:09 +0200
commit78e84f42ddf6c5cd925cfd15d8019d7941f39815 (patch)
treeabf62c1f4ad61cb789e9b32e3f9b87d3a3e1e3a6 /src/qml/jsruntime/qv4runtime.cpp
parenta723c7ae756ba567c2f818bb77a83c24373d3438 (diff)
Use QV4::ReturnedValue in the runtime API
This makes function calls from the JIT/Moth into the runtime significantly nicer. Change-Id: Ie7d7123984d65c0bee0525d3d28c643a76b394c4 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Diffstat (limited to 'src/qml/jsruntime/qv4runtime.cpp')
-rw-r--r--src/qml/jsruntime/qv4runtime.cpp49
1 files changed, 15 insertions, 34 deletions
diff --git a/src/qml/jsruntime/qv4runtime.cpp b/src/qml/jsruntime/qv4runtime.cpp
index fe140d7aba..a019c7bdaf 100644
--- a/src/qml/jsruntime/qv4runtime.cpp
+++ b/src/qml/jsruntime/qv4runtime.cpp
@@ -946,7 +946,7 @@ QV4::Bool __qmljs_cmp_le(const QV4::ValueRef l, const QV4::ValueRef r)
}
-void __qmljs_call_global_lookup(ExecutionContext *context, ValueRef result, uint index, CallDataRef callData)
+ReturnedValue __qmljs_call_global_lookup(ExecutionContext *context, uint index, CallDataRef callData)
{
Q_ASSERT(callData->thisObject.isUndefined());
@@ -957,20 +957,14 @@ void __qmljs_call_global_lookup(ExecutionContext *context, ValueRef result, uint
if (!o)
context->throwTypeError();
- if (o == context->engine->evalFunction && l->name->isEqualTo(context->engine->id_eval)) {
- Value res = static_cast<EvalFunction *>(o)->evalCall(callData->thisObject, callData->args, callData->argc, true);
- if (result)
- *result = res;
- return;
- }
+ if (o == context->engine->evalFunction && l->name->isEqualTo(context->engine->id_eval))
+ return static_cast<EvalFunction *>(o)->evalCall(callData->thisObject, callData->args, callData->argc, true);
- Value res = o->call(callData);
- if (result)
- *result = res;
+ return o->call(callData);
}
-void __qmljs_call_activation_property(ExecutionContext *context, ValueRef result, String *name, CallDataRef callData)
+ReturnedValue __qmljs_call_activation_property(ExecutionContext *context, String *name, CallDataRef callData)
{
Q_ASSERT(callData->thisObject.isUndefined());
@@ -989,18 +983,13 @@ void __qmljs_call_activation_property(ExecutionContext *context, ValueRef result
}
if (o == context->engine->evalFunction && name->isEqualTo(context->engine->id_eval)) {
- Value res = static_cast<EvalFunction *>(o)->evalCall(callData->thisObject, callData->args, callData->argc, true);
- if (result)
- *result = res;
- return;
+ return static_cast<EvalFunction *>(o)->evalCall(callData->thisObject, callData->args, callData->argc, true);
}
- Value res = o->call(callData);
- if (result)
- *result = res;
+ return o->call(callData);
}
-void __qmljs_call_property(ExecutionContext *context, ValueRef result, String *name, CallDataRef callData)
+ReturnedValue __qmljs_call_property(ExecutionContext *context, String *name, CallDataRef callData)
{
Managed *baseObject = callData->thisObject.asManaged();
if (!baseObject) {
@@ -1019,12 +1008,10 @@ void __qmljs_call_property(ExecutionContext *context, ValueRef result, String *n
context->throwTypeError(error);
}
- Value res = o->call(callData);
- if (result)
- *result = res;
+ return o->call(callData);
}
-void __qmljs_call_property_lookup(ExecutionContext *context, ValueRef result, uint index, CallDataRef callData)
+ReturnedValue __qmljs_call_property_lookup(ExecutionContext *context, uint index, CallDataRef callData)
{
Value func;
@@ -1035,12 +1022,10 @@ void __qmljs_call_property_lookup(ExecutionContext *context, ValueRef result, ui
if (!o)
context->throwTypeError();
- Value res = o->call(callData);
- if (result)
- *result = res;
+ return o->call(callData);
}
-void __qmljs_call_element(ExecutionContext *context, ValueRef result, const ValueRef index, CallDataRef callData)
+ReturnedValue __qmljs_call_element(ExecutionContext *context, const ValueRef index, CallDataRef callData)
{
Object *baseObject = callData->thisObject.toObject(context);
callData->thisObject = Value::fromObject(baseObject);
@@ -1049,20 +1034,16 @@ void __qmljs_call_element(ExecutionContext *context, ValueRef result, const Valu
if (!o)
context->throwTypeError();
- Value res = o->call(callData);
- if (result)
- *result = res;
+ return o->call(callData);
}
-void __qmljs_call_value(ExecutionContext *context, ValueRef result, const ValueRef func, CallDataRef callData)
+ReturnedValue __qmljs_call_value(ExecutionContext *context, const ValueRef func, CallDataRef callData)
{
Object *o = func->asObject();
if (!o)
context->throwTypeError();
- Value res = o->call(callData);
- if (result)
- *result = res;
+ return o->call(callData);
}